android - 如何在 Android 上安排长时间(耗时)的操作?

标签 android android-asynctask

例如,我们在 SomeActivity 中,该 Activity 有一个按钮,用于调用将文件从一个目录移动到另一个目录(我们称之为作业)。

在黑莓手机上我会:

  1. 推送一个不可取消的弹出窗口(对话框屏幕)说“请稍候...”
  2. 启动一个线程来完成工作
  3. 在线程完成时关闭弹出窗口

这种方法 99.99% 可以保证我们在任务结束后保持在同一屏幕上,用户只是看到弹出窗口并等待任务完成。设备旋转或任何不会破坏所需工作流程的方式。

在 Android 上,情况发生了变化。我知道可能提供了 AsyncTask 来解决我的问题。甚至还有一个很好的example应该如何使用。但是由于无法保证 Activity 实例将存在多长时间,因此应在 onSaveInstanceState 上取消 AsyncTask(并在 onRestoreInstanceState 上重新启动)。这意味着使用 AsyncTask 不能保证我们能够在开始后完全完成工作。在某些情况下,当发送用于创建用户的 http post 请求时,我不想在重新运行 AsyncTask 时遇到“此登录用户已存在”的麻烦。这是可能的,因为 AsyncTask 可以在请求已发送时被中断(并且服务器实际上正在执行其工作 - 创建新用户),但 AsyncTask 在我们收到响应之前被取消。

Android 上是否有任何解决方案来获得上述类似 BB 的行为?

最佳答案

But since there's no guarantee of how long an Activity instance will live the AsyncTask should be cancelled on onSaveInstanceState (and restarted on onRestoreInstanceState).

或者让它由服务管理。

关于android - 如何在 Android 上安排长时间(耗时)的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241049/

相关文章:

android - 使用 Android AsyncTask 下载 html 文件

android - 如何从android中的 map 获取地址?

android - 当 Player 过来时移除 Sprite

android - 仅通过 AsyncTask 加载一次 ListFragment

android - 如何在使用 AsyncTask 下载图像时显示默认图像?

android - android中FutureTask和AsyncTask的区别

java - 使用 ProcessBuilder 在我的 Android 应用程序中启动服务,但它仅以 "su"(root) 开头

android - 如何将两个或多个文件附加到 Android 上的 SEND 操作

android - 无法升级到最新的支持库Android Studio

android - 在对话框内的 ListView 上执行 onclick 操作