作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 AsyncTask
,它在 doInBackground()
方法中下载文件。我正在发布我的应用程序之前对其进行测试。当我手动强制退出应用程序并重新启动它时,似乎会调用 doInBackground()
,但不会调用 onProgressUpdate()
和 onPostExecute()
。我的 onPostExecute()
调用方法会导致 UI 更改。
如何确保调用 onPostExecute
和 onProgressUpdate()
?我还看到以下警告:
Activity
停止 ActivityRecord
或 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) {
}
}
最佳答案
如果您终止应用程序,或者系统终止它,则应用程序的 AsyncTask 线程将被终止。它们都是应用程序流程的一部分;线程无法在启动它们的进程之外生存。
即使是 IntentService 也可能无法在强制退出后继续存在。这就是为什么任务 killer 是一个坏主意。
简而言之,您所看到的是预期的行为。
关于java - 我手动强制退出应用程序并重新启动后,异步任务不会调用 OnPostExecute 或 onProgressUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14886280/
我是一名优秀的程序员,十分优秀!