[英]onDestroy() gets called when the back button is pressed
在我的Activity中,我已经覆盖onDestory()
并且只是调用一个日志来显示是否正在调用此方法。 (在Android 4.2.2和4.4.4上测试过)
@Override
protected void onDestroy() {
Log.i(TAG, "onDestroy() was called");
super.onDestroy();
}
当我按下后退按钮时,会调用此方法(我看到了日志)。
我相信除非手机内存不足或其他东西,否则不会发生这种情况。 我在应用程序中没有太多东西,但MainActivity和一些片段。
当用户在MainActivity中并按下后退按钮时,这是日志:
I/MainActivity? onBackPressed() was called
I/MainActivity? onStop() was called
I/MainActivity? onDestroy() was called
为什么会这样?
我还在onPause()
检查了isFinishing()
onPause()
,它总是返回true
来自Javadoc:
在销毁活动之前执行任何最终清理。 这可能是因为活动正在完成(有人称之为完成,或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing方法区分这两种情况。注意:不要指望这个方法被称为保存数据的地方!
按下Activity
后退按钮时,它将调用finish()
,这将“关闭”它。
/**
* Called when the activity has detected the user's press of the back
* key. The default implementation simply finishes the current activity,
* but you can override this to do whatever you want.
*/
public void onBackPressed() {
if (!mFragments.popBackStackImmediate()) {
finish();
}
}
当它发生时, onDestroy()
可以(通常会)被调用。
protected void onDestroy()
在销毁活动之前执行任何最终清理。 这可能是因为活动正在完成( 有人称为finish() ,或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。
同样的原因也是为什么把isFinishing()
放在onPause()
总是返回true
, 如果你按下后退按钮(调用finish()
) 。 如果您使用其他方法隐藏Activity
,例如按主页按钮,则不会返回true
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.