我有AsyncTask
以doInBackground()
方式下载文件。我在发布之前测试我的应用程序。当我手动强制退出应用并重新启动时,似乎会调用doInBackground()
,但不会调用onProgressUpdate()
和onPostExecute()
。我的onPostExecute()
调用方法导致UI更改。
如何确保调用onPostExecute
和onProgressUpdate()
?我还看到以下警告:
Activity
停止ActivityRecord
的{{1}}或Activity
销毁超时ActivityRecord
或Activity
空闲超时ActivityRecord
代码:
public void OnCreate(){
new RefreshMyDashboardTask().execute();
}
private class RefreshMyDashboardTask extends AsyncTask<Void, Void, Long> {
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... params) {
super.onProgressUpdate(params);
}
@Override
protected Long doInBackground(Void... params) {
// my server calls are called here.
}
@Override
protected void onPostExecute(Long result) {
}
}
答案 0 :(得分:1)
如果你杀了你的应用程序,或者系统杀了它,你的应用程序的AsyncTask线程就会被杀死。它们都是应用程序流程的一部分;线程无法在启动它们的进程之外生存。
即使是IntentService也可能无法在强制退出后继续存在。这就是任务杀手如此糟糕的原因。
简而言之,您所看到的是预期的行为。