如何杀死Activity和AsyncTask

时间:2015-02-08 11:57:38

标签: android android-activity android-asynctask

我正在做一个小游戏。当我按下后退按钮时,activity将显示取消游戏的窗口是/否

如果我按是,我会通过finish()返回我的MainActivity

我的问题是,我无法再次启动游戏,因为我的Asynctask没有完成。我首先必须在“最近使用的应用程序”中杀死该应用程序。

5 个答案:

答案 0 :(得分:2)

您需要取消活动AsyncTask中的onStop

答案 1 :(得分:1)

您可以参考此link取消异步任务

答案 2 :(得分:1)

您需要实现两件事来停止执行AsyncTask:

1.从你想要停止执行的地方调用AsyncTask的Cancel()方法。这可以在您的活动的onStop()中,如下所示:
asyncTask.cancel(true);

2.现在,您必须在doInBackground方法中使用isCancelled方法检查是否取消了AsyncTask。

protected Object doInBackground(Object... x)  { 

   while (/* condition */)
   {
      ...
      if (isCancelled())  
         break;
   } 
   return null; 
}

为什么呢?由于以下来自AsyncTask的Android文档的描述:

  

取消任务
可以随时通过调用取消任务   取消(布尔值)。调用此方法将导致后续调用   isCancelled()返回true。调用此方法后,   onCancelled(Object),而不是onPostExecute(Object)将被调用   在doInBackground(Object [])返回之后。确保完成任务   尽快取消,你应该经常检查退货   ifCancelled()的值定期来自doInBackground(Object []),if   可能的(例如在循环内)。

答案 3 :(得分:1)

我建议使用surface来编写实际游戏部分而不是活动,这可能会帮助你解决这个问题。

答案 4 :(得分:0)

在要处理的代码中单击

  • 1>调用finish(),并在onStop()或onDestroy()上使用AsyncTask.cancel()方法。
  • 或2>使用AsyncTask.cancel(),并在AsyncTask.onCancelled()方法中,调用finish()来结束活动。

1>常用。