android - 异步任务运行时 Activity 重启

标签 android asynchronous android-activity restart

我对异步任务感到困惑。当我的 Activity 重新开始时我必须做什么? 在我的 Activity 中, onCreate() 启动了一个异步任务。 我知道 Activity 会在 android 需要时重新启动(即方向改变或其他)。 我对此没有问题...而且我认为重新启动一个新的异步任务是可以接受的。

不过,我不知道我之前的异步任务发生了什么。 我有摧毁它吗?

我的第二个问题:如果我在上一个任务中有一个 progressDialog 怎么办。我是否必须关闭此对话框(以及如何关闭)?

最佳答案

不,您的 Asynctask 将随着您的 Activity 以及 progressDialog 结束。当您的 Activity 调用 onRestart() 时,它必须首先经过 onPauseonStop,这将破坏您的 Activity 但不会破坏您的应用程序。

更多 Activity 信息-http://developer.android.com/reference/android/app/Activity.html

此外,取消 Asynctask 并将 progressDialog 设置为 null 会更安全。

来自 Asynctask 文档

可以随时通过调用 cancel(boolean) 来取消任务。调用此方法将导致对 isCancelled() 的后续调用返回 true。调用此方法后,将在 doInBackground(Object[]) 返回后调用 onCancelled(Object),而不是 onPostExecute(Object)。为确保尽快取消任务,您应该始终定期从 doInBackground(Object[]) 检查 isCancelled() 的返回值,如果可能(例如在循环内)。

关于android - 异步任务运行时 Activity 重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850723/

相关文章:

android - bindService的疑惑

android - 如何启动预填了 "to"字段的电子邮件应用程序?

java - Android:在 Eclipse 上安装库

android - 如何使用 NPOT 图像作为 libpng 和 OpenGL ES 1.1 的纹理?

android - 如何检测浏览器是否有点击高亮?

javascript - DynamoDB 扫描返回多个扫描结果

javascript - 为什么这个 async/await 函数返回一个 promise ?

android - 使用 flutter 中的手势检测器导航到不同页面时,黑屏 flutter 。说多个英雄共享同一个标签

javascript - .json()用于错误处理的内容是什么?

java - Android - 同时激活 2 个 Activity