我有一系列必须按顺序完成的网络操作:
我目前通过启动前一个AsynchTask
的{{1}}中的每个onPostExecute
来实现它。现在我意识到在应用程序的不同部分我想重用代码AsynchTask
(发送不同的数据),但我不能因为我不希望AsynchTask 2
启动时它完成了。我意识到我可以使用一个标志(布尔值或整数)并将其传递给AsynchTask 3
,如果标志为假则不会启动AsynchTask 2
,但这看起来令人困惑和混乱。
这可以使用Threads以更干净的方式完成吗?或者我最终会使用基本相同的逻辑,即在AsynchTask 3
方法中使用标志?
如果您希望我发布代码,请告诉我,但是相当长,我觉得我的问题很清楚。
答案 0 :(得分:1)
如果你知道你将按顺序运行所有这些任务,为什么不把它们全部放在同一个(year, month, day, hour, minute, second)
?您仍然可以使用不同的类或函数来使代码更加划分。
答案 1 :(得分:1)
您可以创建一个ArrayList
来保存要执行的AsyncTask
列表,然后启动第一个。
在AsyncTask
的每个onPostExecute
中,向Handler
或BroadcastReceiver
发送一条消息,然后从AsyncTask
开始ArrayList
{1}},可能是Singleton
,也可能是静态的。我为它提供了代码,但我现在没有时间。
另外,使用Thread
可能会使它更干净,但它也可能使它变得更加混乱,这完全取决于你如何实现它。我个人从不使用AsyncTask
。我总是使用Thread
和Handler
,但这只是偏好。