在Android中将AsyncTasks链接在一起 - 最好使用Threads



我有一系列必须按顺序完成的网络操作:

  1. 连接到特定 Wifi 设备的接入点
  2. 通过 TCP 向其发送一些数据
  3. 连接到其他接入点
  4. 发送 UDP 广播

我目前通过在上一个AsynchTask onPostExecute启动每个AsynchTask来实现它。现在我意识到在应用程序的不同部分,我想重用代码AsynchTask 2(发送不同的数据(,但是我不能,因为我不希望AsynchTask 3完成后启动。我意识到我可以使用一个标志(布尔值或 int(并将其传递给AsynchTask 2,如果标志为假,则不启动AsynchTask 3,但这似乎令人困惑和混乱。

可以使用线程以更简洁的方式完成此操作吗?或者我最终会使用本质上相同的逻辑,即在run()方法中使用标志?

如果您希望我发布代码,请告诉我,但是它相当长,我觉得我的问题很清楚。

如果您知道要按顺序运行所有这些任务,为什么不将它们全部放在同一个AsyncTask中呢?您仍然可以使用不同的类或函数来使代码更加分隔。

您可以创建一个包含要执行的AsyncTask列表的ArrayList,然后启动第一个。

onPostExecute的每个AsyncTask中,将消息发送回HandlerBroadcastReceiver,然后从ArrayList开始下一个AsyncTask,这可能是Singleton,也可能是静态的。我会为它提供代码,但我现在没有时间。

此外,使用 Thread 可能会使其更干净,但它也可能使它更加混乱,这一切都取决于您如何实现它。我个人从不使用AsyncTask.我总是使用ThreadHandler,但这只是偏好。

相关内容

  • 没有找到相关文章

最新更新