繁体   English   中英

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

[英]Why is onDestroy() called after onResume() when using back-button

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

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

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

这是为什么?

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

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

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

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

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

isFinishing是Activity的一种方法。

你在onDestroy()做了一些繁重的操作吗? 我认为你的活动视图被破坏了,但不是活动对象。 并且在实际销毁上一个Activity对象之前,您点击应用程序图标。

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

症状听起来就像你有:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM