如果我去一个不同的Activity,这个AsyncTask的创建会继续执行吗?或者他们会停止工作并将任务完成一半?如果是这样,当他们回到这个活动时,他们会继续吗?
是的,它会继续运行。这可能是一把双刃剑,因为它通常会保留Activity实例,导致它超出了其回调的范围,这并不理想。如果您正在运行的任务与“活动”本身没有相同的生命周期需求,则最好放置到“服务”中。
为了启动运行AsyncTask的活动之一,我需要一个AsyncTask完全执行。我如何设置这个约束?你能告诉我一些这样的示例代码吗?
有太多的方法可以做到这一点,很多取决于您的应用程序的体系结构,以提供特定的示例代码......但这里有一些更高层次的想法。由于AsyncTask在任务执行完成时在主线程(onPostExecute
)上提供了一个简单的回调方法,因此您可以在该点设置一个标志。或者,也许只需检查AsyncTask从活动启动的任何代码中检索的任何数据的存在。同样,服务将为此提供良好的环境,因为在前进之前,多个活动可以连接到服务并检查任务状态。
根据您的应用程序,另一种选择是将任务的结果转储到ContentProvider中。 ContentProviders包含一个很好的界面,可以在不诉诸全局广播意图的情况下通知观察者所做的更改。
HTH