当Activity更改时运行AsyncTasks会发生什么?

Har*_*era 18 android android-asynctask

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

  1. AsyncTask进程自动杀死操作系统?

  2. 异步任务完成它的整个操作?

Gir*_*hai 40

如果在Activity中启动AsyncTask并旋转设备,则将销毁Activity并创建新实例.

同样,如果用户导航到另一个活动,当前活动将被销毁或进入后台活动堆栈,新活动将在前台.

但AsyncTask不会死.它会继续生存直到它完成.完成后,AsyncTask将不会更新新Activity的UI.实际上,它更新了之前不再显示的活动实例.这可能导致java.lang.IllegalArgumentException类型的异常:如果您使用findViewById来检索Activity内的视图,则View不会附加到窗口管理器.


cap*_*wag 31

AsyncTask是一个抽象的Android类,它可以帮助Android应用程序以有效的方式处理主UI线程.AsyncTask类允许我们执行持久的任务/后台操作,并在UI线程上显示结果,而不会影响主线程.

1. 操作系统不会自动杀死 AsyncTask进程.AsyncTask进程在后台运行,并负责在任何情况下完成自己的工作.您可以通过调用cancel(true)方法取消AsycnTask.这将导致后续调用isCancelled()返回true.在调用此方法之后,在doInBackground()返回后调用onCancelled(Object)方法而不是onPostExecute().

2.完成操作后,将停止正在处理后台线程.AsyncTask有一个onPostExecute(),一旦你的工作完成就会被调用.在doInBackground()方法完成处理之后调用此方法.doInBackground()的结果传递给此方法.