Android:长时间运行操作之间的对话

标签 android android-asynctask android-dialog

我需要一个建议来实现以下情况:

显示不需要在 UI 线程 中执行的两个长期运行操作(SQLite 数据库和网络操作)之间的对话。

显示哪个对话框取决于第一个长时间运行操作的结果,而执行哪个第二个长时间运行操作取决于用户在对话框中选择的选项。我已经使用了两个 AsynTask(如下所示)来完成此操作,但程序流程非常困惑。

有什么建议可以让这更容易吗?

  1. UI 线程调用 AsynTask AT1
  2. AT1 doInBackGround() 执行长时间运行操作 1
  3. AT2 onPostExecute 显示对话框
  4. UI 线程处理对话框的结果(使用回调方法)并调用 AsynTask AT2
  5. AT2 doInBackGround() 执行长时间运行操作 2
  6. AT2 onPostExecute 改变了 UI。

最佳答案

您可以使用自己的 AsyncTask 在单独的服务中运行每个任务,并让它们将结果发送到 UI 线程上的处理程序。

处理程序应包括决定如何处理输入的逻辑。

通信应该通过消息或您创建的新 Parcellable 通过 bundle。

如果这些操作很长,你应该考虑用户将关闭对话框并全局通知他[从应用程序或通知栏]

关于Android:长时间运行操作之间的对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14230920/

相关文章:

Android:AEAD 密码的 CipherStream-API 速度慢得令人无法接受

android - Android 中 "Java class extends" "AppcompatActivity"与 "Activity"与 "ActionBar"之间的区别?

java - 为什么 Android Studio Profiler 不显示 AsyncTask 线程上的 Activity

android - 通过 AsyncTask 下载图像并将其显示在 Imageview 中而不存储在 sdcard 中

android - 如何在 Android 对话框中设置 ImageView?

android - 尝试在长按列表项时添加对话框,导致 StackOverflow 错误

android - 比较两个 `Uint8List` 是否相等的正确快速方法是什么?

android - 无法在未使用 AsyncTask 调用 Looper.prepare() 的线程内创建处理程序

java - 具有自定义内容 View 的 AlertDialog 看起来与 AlertDialog 完全不同

android - 将 GestureLibrary 与 ScrollView 一起使用