在 Android 中将 AsyncTasks 链接在一起 - 更好地使用线程?
Chaining together AsyncTasks in Android - better to use Threads?
我有一系列必须按顺序进行的网络操作:
- 连接到特定 Wifi 设备的 AP
- 通过 TCP 向它发送一些数据
- 连接到不同的 AP
- 发送UDP广播
我目前通过在前一个 AsynchTask
的 onPostExecute
中启动每个 AsynchTask
来实现它。现在我意识到,在应用程序的不同部分,我想重用代码 AsynchTask 2
(发送不同的数据),但是我不能,因为我不希望 AsynchTask 3
在它启动时启动完成的。我意识到我可以使用一个标志(布尔值或整数)并将其传递给 AsynchTask 2
并且如果标志为假则不启动 AsynchTask 3
,但这似乎令人困惑和混乱。
能否使用线程以更简洁的方式完成此操作?或者我最终会使用基本相同的逻辑,即在 run()
方法中使用标志?
如果您希望我 post 代码,请告诉我,但是它相当长,我觉得我的问题很清楚。
如果您知道您将 运行 按顺序完成所有这些任务,为什么不将它们全部放在同一个 AsyncTask
中?您仍然可以使用不同的 类 或函数来使您的代码更加细化。
您可以创建一个 ArrayList
来保存要执行的 AsyncTask
列表,然后开始第一个。
在 onPostExecute
中的每个 AsyncTask
中,将消息发送回 Handler
或 BroadcastReceiver
,然后从 AsyncTask
开始下一个 AsyncTask
ArrayList
,它可能在 Singleton
中,也可能是静态的。我会给出代码,但我现在没有时间。
此外,使用 Thread
s 可能会使它变得更干净,但也可能使它变得更加混乱,这取决于您如何实现它。我个人从不使用 AsyncTask
。我总是使用 Thread
和 Handler
,但这只是偏好。
我有一系列必须按顺序进行的网络操作:
- 连接到特定 Wifi 设备的 AP
- 通过 TCP 向它发送一些数据
- 连接到不同的 AP
- 发送UDP广播
我目前通过在前一个 AsynchTask
的 onPostExecute
中启动每个 AsynchTask
来实现它。现在我意识到,在应用程序的不同部分,我想重用代码 AsynchTask 2
(发送不同的数据),但是我不能,因为我不希望 AsynchTask 3
在它启动时启动完成的。我意识到我可以使用一个标志(布尔值或整数)并将其传递给 AsynchTask 2
并且如果标志为假则不启动 AsynchTask 3
,但这似乎令人困惑和混乱。
能否使用线程以更简洁的方式完成此操作?或者我最终会使用基本相同的逻辑,即在 run()
方法中使用标志?
如果您希望我 post 代码,请告诉我,但是它相当长,我觉得我的问题很清楚。
如果您知道您将 运行 按顺序完成所有这些任务,为什么不将它们全部放在同一个 AsyncTask
中?您仍然可以使用不同的 类 或函数来使您的代码更加细化。
您可以创建一个 ArrayList
来保存要执行的 AsyncTask
列表,然后开始第一个。
在 onPostExecute
中的每个 AsyncTask
中,将消息发送回 Handler
或 BroadcastReceiver
,然后从 AsyncTask
开始下一个 AsyncTask
ArrayList
,它可能在 Singleton
中,也可能是静态的。我会给出代码,但我现在没有时间。
此外,使用 Thread
s 可能会使它变得更干净,但也可能使它变得更加混乱,这取决于您如何实现它。我个人从不使用 AsyncTask
。我总是使用 Thread
和 Handler
,但这只是偏好。