Android 关于活动流的异步任务怀疑

Android 关于活动流的异步任务怀疑,android,android-asynctask,Android,Android Asynctask,我对AsyncTask有一些担忧,在阅读文档时我无法澄清 “我的应用程序主活动”在创建时运行多个异步任务。这些异步任务主要是从数据库下载数据或检索数据 如果我转到其他活动,是否会在上创建异步任务 这个继续执行吗?还是他们会停止工作,离开办公室 任务完成了一半?如果是这样的话,当他们回到家里时,他们还会继续吗 这个活动 为了从 一个正在运行AsyncTask的,我需要一个AsyncTask的 完全执行。如何设置此约束?你能给我看看吗 请给我一些这个的示例代码好吗 谢谢在使用意图和广播接收器之前,我

我对AsyncTask有一些担忧,在阅读文档时我无法澄清

“我的应用程序主活动”在创建时运行多个异步任务。这些异步任务主要是从数据库下载数据或检索数据

  • 如果我转到其他活动,是否会在上创建异步任务 这个继续执行吗?还是他们会停止工作,离开办公室 任务完成了一半?如果是这样的话,当他们回到家里时,他们还会继续吗 这个活动
  • 为了从 一个正在运行AsyncTask的,我需要一个AsyncTask的 完全执行。如何设置此约束?你能给我看看吗 请给我一些这个的示例代码好吗

  • 谢谢

    在使用意图和广播接收器之前,我做了类似的事情

    如果异步任务在完成时发送一个全局或应用程序范围的意图,那么只要正确构造它们,就很容易让接收者接收到它。通过在将新活动推送到堆栈上时创建接收器,并在活动暂停时关闭接收器,将始终有一个接收器在那里获取意图并被告知(例如:数据从数据库下载)并执行该操作

    如果您尝试启动需要该数据的活动,您可以在尚未找到意图的情况下拒绝创建该活动,或者创建该活动,并在数据下载完成时让其显示进度条或其他内容,然后让其接收者在意图到达时对其进行操作

    希望这有帮助

    如果我转到另一个活动,在此活动上创建的异步任务是否会继续执行?或者他们会停止工作,让任务完成一半?如果是这样的话,当他们回到这项活动时,他们还会继续吗

    是的,它将继续运行。这可能有点像一把双刃剑,因为它通常也会保留活动实例,导致它超出其
    ondestory()
    回调的范围,这并不理想。如果您正在运行的任务与活动本身的生命周期需求不同,则最好将其放入服务中

    为了从运行AsyncTask的活动开始其中一个活动,我需要完全执行AsyncTask的其中一个活动。如何设置此约束?你能给我看一下这个的代码示例吗

    有太多的方法可以做到这一点,许多方法取决于应用程序的体系结构,以提供特定的示例代码……但这里有一些更高层次的想法。由于AsyncTask在任务执行完成时在主线程(
    onPostExecute
    )上提供了一个简单的回调方法,因此您可以在该点设置一个标志。或者简单地检查AsyncTask从将启动活动的任何代码中检索的任何数据是否存在。同样,服务将为此提供良好的上下文,因为多个活动可以连接到服务,并在继续之前检查任务状态

    根据应用程序的不同,另一种选择是将任务的结果转储到ContentProvider中。ContentProviders包括一个很好的界面,用于通知观察者更改,而无需求助于全局广播意图