我需要一个建议来实现以下情况:
显示两个长时间运行的操作(SQLite数据库和网络操作)之间的对话框,需要在UI Thread
中执行。
显示哪个对话框取决于第一个长期运行操作的结果,而执行哪个第二个长期运行操作取决于用户在对话框中选择的选项。我使用了两个AsynTask
(如下所示)来实现这一点,但程序流程非常混乱。
有什么建议让这更容易吗?
- UI线程调用AsynTask AT1
- AT1 doInBackGround()执行长时间运行的操作1
- AT2 onPostExecute显示对话框 UI线程处理对话框的结果(使用回调方法)并调用AsynTask AT2
- AT2 doInBackGround()执行长时间运行的操作2
- AT2 onPostExecute改变UI。
你可以用自己的AsyncTask在一个单独的服务中运行每个任务,并让它们将结果发送给UI线程上的Handler。
处理程序应该包含决定如何处理输入的逻辑。
通信应该通过消息或您创建的新Parcellable在bundle中传递。
如果这些操作很长,你应该考虑用户将关闭对话框并全局通知他[从应用程序或通知栏]