Android 当活动更改时,运行异步任务会发生什么情况?

Android 当活动更改时,运行异步任务会发生什么情况?,android,android-asynctask,Android,Android Asynctask,当网络操作在Asynctask中运行时,如果用户按下“上一步”按钮并切换到另一个活动,在后台运行的Asynctask会发生什么情况 异步任务进程是否被操作系统自动终止 异步任务是否完成了整个操作 如果在活动内启动异步任务并旋转设备,则该活动将被销毁并创建新实例 类似地,若用户导航到另一个活动,当前活动将被销毁或进入后台活动堆栈,新活动将位于前台 但这项任务不会消亡。它将继续生存,直到它完成。 当它完成时,AsyncTask不会更新新活动的UI。实际上,它会更新不再显示的活动的前一个实例。这可能导

当网络操作在Asynctask中运行时,如果用户按下“上一步”按钮并切换到另一个活动,在后台运行的Asynctask会发生什么情况

  • 异步任务进程是否被操作系统自动终止

  • 异步任务是否完成了整个操作


  • 如果在活动内启动异步任务并旋转设备,则该活动将被销毁并创建新实例

    类似地,若用户导航到另一个活动,当前活动将被销毁或进入后台活动堆栈,新活动将位于前台

    但这项任务不会消亡。它将继续生存,直到它完成。
    当它完成时,AsyncTask不会更新新活动的UI。实际上,它会更新不再显示的活动的前一个实例。这可能导致java.lang.IllegalArgumentException类型的异常:如果使用findViewById检索活动内部的视图,则视图未附加到窗口管理器。

    AsyncTask是一个抽象的Android类,可帮助Android应用程序高效地处理主UI线程。AsyncTask类允许我们执行长期任务/后台操作,并在UI线程上显示结果,而不会影响主线程

    1。AsyncTask进程不会被操作系统自动终止。AsyncTask进程在后台运行,在任何情况下都负责完成自己的作业。您可以通过调用cancel(true)方法取消AsycntTask。这将导致对isCancelled()的后续调用返回true。调用此方法后,在doInBackground()返回后,将调用onCancelled(Object)方法,而不是onPostExecute()


    2。完成操作后,它所处理的后台线程停止。AsyncTask有一个onPostExecute(),工作完成后将调用它。doInBackground()方法完成处理后调用此方法。doInBackground()的结果将传递到此方法。

    AsyncTask仍将运行,并尝试在僵尸活动上发布结果。最好是使用AsyncTaskLoader。

    “当它完成时,AsyncTask不会更新新活动的UI。实际上,它会更新不再显示的活动的前一个实例”-如果新活动是短期的,如何使活动的旧实例保持活动状态?@JaydevKalivarapu在启动新活动时不从旧活动调用finish。在这种情况下,当我使用Intent切换回旧活动时,我使用现有实例本身?@girubai,但实际上我没有得到
    IllegalArgumentException
    。它总是抛出异常吗?@MahendranSakkarai可能它已经完成了。奇怪的是,接受的答案没有提到如果活动已经死亡会发生什么。但为了澄清一下,如果我们调用cancel(true),异步任务的doInBackground()将继续运行,直到它完成,是吗?