如果活动被杀死,AsyncTask会继续运行吗?

时间:2011-03-07 22:33:32

标签: android android-asynctask

我想我知道答案,但AsyncTask在调用Activity finish()之后是否继续存在?

    protected void onPreExecute() {
        Toast.makeText(getApplicationContext(), "Your data is processing.", Toast.LENGTH_LONG);
        finish();
    }

编辑:到目前为止两个不同的答案:)

6 个答案:

答案 0 :(得分:13)

AsyncTask绑定到UI线程,如果Activity完成,则异步任务被取消。

[update] - 下面的Hackbod评论是正确的。应该注意的是,AsyncTasks意味着短暂存在,因此不必担心这个问题。 AsycTask只有在完成时才会真正消失,或者在完成调用后可能会或可能不会发生过程被杀死。

答案 1 :(得分:1)

它一直运行直到onPostExecute完成。

答案 2 :(得分:1)

我在使用异步任务方面遇到了一些奇怪的问题,如果某个活动被操作系统杀死,并且应用程序恢复时,AsyncTasks有时根本不会运行。我不确定为什么他们会进入这种状态。如果在自己的执行程序线程中执行AsyncTasks,则不会发生这种情况。我可能会遇到一些奇怪的情况。认为无论如何在这里发帖可能是有用的:)。

答案 3 :(得分:0)

异步任务一直运行,直到onPostExecute()完成。

通过在f​​inish()和onPostExecute()上放一个吐司来尝试,看看哪个吐司首先显示。

答案 4 :(得分:0)

Asynctask不受任何活动或服务生命周期方法的约束。

它继续在一个单独的线程中运行,直到onPostExecute()在主线程中执行。

答案 5 :(得分:0)

异步任务不会影响活动生命周期或任何配置更改。它们一直运行直到onPostExecute()方法被调用。

应该使用服务来代替长时间运行。