我有AsyncTask
我在其中调用从互联网下载一些数据并执行某些操作的方法。
在仿真器中,尽管连接速度很快,但在实际设备上如果连接或设备不快,此任务会自动终止。我不知道为什么,但可能在Android默认任务管理中存在某种默认超时。
我该如何解决这个问题?
如何强制完成任务?
这是我的代码
myTask = new AsyncTask<Void, Void, Void>() {
ProgressDialog pd;
boolean correctlyInitialized = true;
@Override
protected void onPreExecute() {
pd= new ProgressDialog(CatcherTree.this);
pd.setCancelable(false);
try {
pd.show();
} catch (Error e) {
e.printStackTrace();
}
}
@Override
protected Void doInBackground(Void... params) {
long t = System.currentTimeMillis();
//this method requires time to complete
updateAllDataSet(CatcherTree.this);
return null;
}
@Override
protected void onPostExecute(Void rate) {
pd.dismiss();
}
}.execute();
答案 0 :(得分:0)
AsyncTasks依赖工作线程来执行后台作业,而线程不只是消失。所以我的猜测是工作线程抛出异常并终止。
在logcat中查找异常,或者更好的是 - 在updateAllDataSet()
中正确处理异常。