异步任务正在运行时重新启动活动

时间:2013-02-13 09:54:47

标签: android asynchronous android-activity restart

我对异步任务感到困惑。我的活动重启后我该怎么办? 在我的活动中,onCreate()启动异步任务。 我知道当android需要它时,活动会重新启动(即方向改变或其他)。 我对此没有任何问题......我认为重新启动新的异步任务是可以接受的。

然而,我不知道我以前的异步任务发生了什么。 我有破坏它吗?

我的第二个问题:如果我在上一个任务中有progressDialog怎么办?我是否必须关闭此对话框(以及如何)?

2 个答案:

答案 0 :(得分:2)

不,您的Asynctask将以您的progressDialog活动结束。当您的活动致电onRestart()时,必须首先通过onPauseonStop,这会破坏您的活动,但不会破坏您的应用。

有关活动的更多信息 - http://developer.android.com/reference/android/app/Activity.html

此外,取消Asynctask以及将progressDialog设置为null会更安全。

来自Asynctask文档

A task can be cancelled at any time by invoking cancel(boolean). Invoking this method will cause subsequent calls to isCancelled() to return true. After invoking this method, onCancelled(Object), instead of onPostExecute(Object) will be invoked after doInBackground(Object[]) returns. To ensure that a task is cancelled as quickly as possible, you should always check the return value of isCancelled() periodically from doInBackground(Object[]), if possible (inside a loop for instance.)

答案 1 :(得分:0)

您必须保存活动实例,当您的活动重新启动时,您必须使用此实例恢复活动时使用以下链接:Saving some data on orientation change in Android 你必须解开那个对话。