【问题标题】:AsyncTask with android:noHistory="true"AsyncTask 与 android:noHistory="true"
【发布时间】:2012-05-09 07:40:22
【问题描述】:

AndroidManifest.xml 文件中,我在activity 中有android:noHistory="true" 属性。在那个activity 中,我有一个AsyncTask 执行一个长时间运行的任务。当我转到另一个 activity 时,AsyncTask 会继续运行吗?或者打开另一个activity 会导致AsyncTask 停止?

【问题讨论】:

    标签: android asynchronous android-activity android-asynctask


    【解决方案1】:

    是的,它会一直持续到完成。但请注意,您没有对 onPostExecute 中的活动进行任何操作。

    【讨论】:

    • 因为它会导致异常:您无法操作不再附加到屏幕的视图的小部件。
    • 据我了解,使用 android:noHistory="true" 会导致当前活动在另一个活动开始时结束。 AsyncTask 会随着活动结束吗?还是活动结束后还会继续?
    • 因为AsyncTask是另外一个线程,所以会继续。因为如果你调用finish(),你也会停止活动。
    【解决方案2】:

    一个不错的选择是使用loaders,他们提供这种任务管理,并且会在轮换或其他导致活动消失的原因时取消底层异步任务。

    【讨论】:

      【解决方案3】:

      它将继续,因为它在自己的线程中运行,但它涉及一些关于更新 UI 和处理屏幕旋转的潜在问题。

      我建议您改为启动 Service 并在其中运行您的 AsyncTaskLoader。完成后,您可以使用 LocalBroadcastManager 让任何活动知道您的 Service 已完成并且需要更新 UI。

      【讨论】:

        猜你喜欢
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2020-06-10
        • 1970-01-01
        相关资源
        最近更新 更多