在 Android 中将 AsyncTasks 链接在一起 - 更好地使用线程?

Chaining together AsyncTasks in Android - better to use Threads?

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

  1. 连接到特定 Wifi 设备的 AP
  2. 通过 TCP 向它发送一些数据
  3. 连接到不同的 AP
  4. 发送UDP广播

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

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

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

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

您可以创建一个 ArrayList 来保存要执行的 AsyncTask 列表,然后开始第一个。

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

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