使用后退按钮时,为什么在onResume()之后调用onDestroy()

时间:2013-05-25 11:08:22

标签: android

当我开始调用我的android-activity时,onCreate()被调用onResume()

当我按下后退按钮返回主屏幕并再次点按应用图标时,先调用onCreate(),然后调用onResume(),然后再调用onDestroy()。< / p>

我的应用程序仍处于活动状态,但由于onDestroy()将一些成员设置为null,因此执行某些操作会导致错误。

为什么?

更新:按下后等待30秒后一切正常。除了将一些变量设置为null并.interrupt()使用后台线程之外,我没有在onDestroy中做任何重做。

4 个答案:

答案 0 :(得分:3)

自己想出来。我对Activity的理解是有缺陷的。当然,Android会在 Activity实例上调用onDestroy(),这可能会在构建之后几秒钟发生。

答案 1 :(得分:0)

onDestroy被调用,因为默认情况下,按回键会导致您的活动调用finish(),从而启动销毁调用onDestroy()的活动。

为了防止在活动被破坏的情况下采取某些行动,请执行以下操作:

if(!isFinishing()) {
   // do your action here
}

isFinishing是Activity的一种方法。

答案 2 :(得分:0)

你在onDestroy()中做了一些繁重的操作吗?我认为你的活动视图被破坏了,但不是活动对象。即使在上一个Activity对象实际销毁之前,您也可以点击App图标。

答案 3 :(得分:0)

我认为除了你所描述的内容之外还有一些东西。 Android不仅可以防止活动被破坏,还必须在主线程上发生。

症状听起来就像你有:

  • 服务执行冗长的HTTP或数据库操作。你确定没有suxg的东西吗?
  • 调用同步方法的另一个线程(可能由AsyncTask管理?)