我有一张地图.我有一个积分数据库.我想在AsyncTask中显示来自数据库的点,因此用户可以在加载点时在地图上移动.没有多少分(如353等),但是当用户靠近(缩放)到具有更大标记的地图时,我会重绘它们.当重绘时,应用程序冻结了几分之一秒,但它很明显,所以我认为AsyncTask就是答案.
然而,它不起作用.这很奇怪.我在这里找到了一些问题,但问题主要是没有调用"publishProgress()"方法,这不是我的情况.
在方法"doInBackground()"中,我打开数据库,执行查询并将其保存到Cursor(这是我的ShowPoints类的属性,它扩展了AsyncTask,所以它至少可以被这个类的所有方法访问//至少我觉得).比我经历光标并且每次调用"publishProgress()",其中shoud调用"onProgressUpdate()",在这里我使用我的光标从"doInBackgroud()"创建标记.
奇怪的是,如果我进行调试,并逐步完成代码,那么一切都会正常运行.但是当我运行应用程序时,没有添加任何标记或只添加其中一些标记.
private class ShowPoints extends AsyncTask<String, Integer, String> {
private String resp="Body na?teny";
private Cursor c_body;
private LatLng marker_pozice;
@Override
protected String doInBackground(String... params) {
int i=0;
try {
DatabaseHelper db = new DatabaseHelper(MainActivity.this);
try {
db.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
c_body = db.query(DatabaseHelper.TABLE_POINTS, allColumns, null, null, null,null, null);
if(c_body.moveToFirst())
{
if(params[0]=="small"){
do {
i++;
int ikona = R.drawable.gray_dot;
int trasa = c_body.getInt(6);
switch(trasa){
case 1: ikona = R.drawable.color_00a750_dot;
break;
case 2: ikona = R.drawable.color_ec1c24_dot;
break; …Run Code Online (Sandbox Code Playgroud)