请帮忙。我可以重新启动AsyncTask。第二次调用updatePoi()时,应用程序每次崩溃。无法停止/重新启动AsyncTask
这里是我的代码:
我检查任务的状态,并配置取消(真)。
public void updatePoi() { //new RefreshMapTask().execute(); if (refreshMapTask.getStatus() == AsyncTask.Status.RUNNING || refreshMapTask.getStatus() == AsyncTask.Status.PENDING) { refreshMapTask.cancel(true); } refreshMapTask.execute(); } }
这是我的AsyncTask。在doInBackground,我写了一个休息时间。
private class RefreshMapTask extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); getMapView().getOverlays().clear(); myPoiOverlay.clear(); exitOverlay.clear(); } @Override protected Void doInBackground(Void... voids) { Application app = (Application)getApplication(); Log.d(TAG, "exits count = " + app.getExits().size()); GeoPoint pointToNavigate = null; for (Exit exit : app.getExits()) { for (Poi poi : exit.getPoi()) { if (isCancelled()){ break; } //some code here } } //small code here return null; } @Override protected void onPostExecute(Void aVoid) { getMapView().invalidate(); } }
编辑:从评论添加到解决问题
public void updatePoi() {
//new RefreshMapTask().execute();
if (refreshMapTask.getStatus() == AsyncTask.Status.RUNNING ||
refreshMapTask.getStatus() == AsyncTask.Status.PENDING){
refreshMapTask.cancel(true);
refreshMapTask = new RefreshMapTask();
} else {
refreshMapTask = new RefreshMapTask();
}
refreshMapTask.execute();
}
为什么你把doinbaground为无效,并返回为空 – appukrb