我总是认为finish()会立即触发ofDestory()。但是在4.3中,这似乎不是事实。 我只想知道哪种情况它会发生什么? 对不起,我不能把我的所有代码放在这里。 它困扰了我几个小时,我找不到任何有用的信息。
答案 0 :(得分:2)
onPause()
是保证在进程被终止之前被调用的最后一个方法 - 如果系统必须在紧急情况下恢复内存,则可能不会调用onStop()
和onDestroy()
。因此,您应该使用onPause()
将关键的持久性数据(例如用户编辑)写入存储。
如果您使用finish()
或系统自行杀死了您的活动,则无关紧要。如果系统“想要”恢复内存,则无法保证将调用onDestroy()
或onStop()
。
答案 1 :(得分:1)
不,不会保证会调用onDestroy()
。
onStop()
您想要的是onPause()
对于所有版本的Android都是如此,最新版本可以追溯到1.0。对于初学者来说,Activity lifecycle最初可能会让人感到困惑。但这不是初学者的错,而是框架设计师的错。
初学者犯的另一个错误是假设onResume()
是关于恢复活动的,而实际上它是在活动中恢复的UI线程。这是文档一遍又一遍的另一点,但实际上,如果android团队调用该方法的东西不那么模糊,那将会更加简单。
答案 2 :(得分:1)
首先,这个答案假定您指的是Android的Activity类及其finish()
方法和onDestroy()
生命周期方法。
其次,这取决于你对“确定”的定义:
您的流程可能会在finish()
和onDestroy()
之间终止,原因与触发finish()
设备制造商或ROM修改器可能会引入一些棘手的更改,会破坏finish()
和onDestroy()
之间的联系
电池可能会在finish()
和onDestroy()
等
答案 3 :(得分:-1)
根据:http://developer.android.com/reference/android/app/Activity.html
总是会被召唤,
的onDestroy():
的
在您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在完成(有人在其上调用finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。