应用程序跳转到另一个活动后,AsyncTask任务是否继续?

问题描述:

如果我的应用程序正在通过AsyncTask运行一个线程,并且同时我跳转到另一个活动(场景),线程是否仍然在后台运行。我在想如果我按回来,线程已经完成或原始场景必须重复线程活动?应用程序跳转到另一个活动后,AsyncTask任务是否继续?

+1

的可能的复制[会怎么样运行AsyncTasks当活动的变化?(http://stackoverflow.com/questions/31085406/what-happens-to-running-asynctasks-when-the-activity-changes) –

+0

答案是肯定的......我已经发布了许多与此应用程序相关的噩梦崩溃;) –

+0

如果我想要跳转到另一个活动并让该线程在我跳回原始活动时再次运行,我应该取消该任务? – Spidey

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

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

2.操作完成后,其正在处理的后台线程停止。 AsyncTask有一个onPostExecute()这是你的工作完成后调用。此方法在doInBackground()方法完成处理后调用。从结果doInBackground()传递给此方法。

回答Here

是的。 AsyncTask只是一个Java执行程序的巧妙包装

异步任务的生命周期未绑定到活动。因此,如果一旦启动了AsyncTask,即使暂停/停止活动,asyncTask也会继续。

+0

如果我想跳到另一个活动并让线程在我跳回原始活动时再次运行,我应该取消该任务吗?为了避免应用程序崩溃? – Spidey

+0

这取决于活动。如果异步任务正在更新活动的UI,并且您按下了该活动,那么运行该AsyncTask就没有意义了。但是,假设您启动了一个AsyncTask,它将一些userInfo从您的应用程序发送到服务器,在这种情况下,您的asyncTask不依赖于任何活动。所以它可以继续。 – thedarkpassenger