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

时间:2015-06-02 18:13:41

标签: android multithreading android-asynctask

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

  1. 连接到特定的Wifi设备的AP
  2. 通过TCP发送一些数据
  3. 连接到其他AP
  4. 发送UDP广播
  5. 我目前通过启动前一个AsynchTask的{​​{1}}中的每个onPostExecute来实现它。现在我意识到在应用程序的不同部分我想重用代码AsynchTask(发送不同的数据),但我不能因为我不希望AsynchTask 2启动时它完成了。我意识到我可以使用一个标志(布尔值或整数)并将其传递给AsynchTask 3,如果标志为假则不会启动AsynchTask 2,但这看起来令人困惑和混乱。

    这可以使用Threads以更干净的方式完成吗?或者我最终会使用基本相同的逻辑,即在AsynchTask 3方法中使用标志?

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

2 个答案:

答案 0 :(得分:1)

如果你知道你将按顺序运行所有这些任务,为什么不把它们全部放在同一个(year, month, day, hour, minute, second)?您仍然可以使用不同的类或函数来使代码更加划分。

答案 1 :(得分:1)

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

AsyncTask的每个onPostExecute中,向HandlerBroadcastReceiver发送一条消息,然后从AsyncTask开始ArrayList {1}},可能是Singleton,也可能是静态的。我为它提供了代码,但我现在没有时间。

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