5

当我首先onCreate()调用我的 android-activity 时,然后onResume().

当我然后按返回按钮返回主屏幕并再次点击应用程序图标时,首先onCreate()调用,然后onResume()调用onDestroy()

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

这是为什么?

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

4

4 回答 4

3

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

于 2013-05-26T15:57:36.943 回答
0

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

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

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

isFinishing是 Activity 的一个方法。

于 2013-05-25T11:13:43.930 回答
0

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

于 2013-05-25T11:29:39.703 回答
0

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

这些症状听起来就像您有以下任何一种情况:

  • 执行较长的 HTTP 或数据库操作的服务。你确定没有suxg的东西吗?
  • 另一个调用同步方法的线程(可能由 AsyncTask 管理?)
于 2013-05-26T15:44:02.113 回答