Java Android:Will finish()是否始终调用onDestroy()?
简单问题:你能确定Java Android:Will finish()是否始终调用onDestroy()?,java,android,ondestroy,activity-finish,Java,Android,Ondestroy,Activity Finish,简单问题:你能确定finish()会调用onDestroy()?我还没有找到任何关于这个的证实 简单的问题:您能确定finish()将调用onDestroy()吗 首先,这个答案假设您指的是Android的活动类及其finish()方法和onDestroy()生命周期方法 其次,这取决于您对“确定”的定义: 您的进程可能在finish()和onDestroy()之间终止,原因与触发调用finish()的原因无关 设备制造商或ROM调试器可能会引入一些扭曲的变化,这会破坏finish()和onD
finish()
会调用onDestroy()
?我还没有找到任何关于这个的证实
简单的问题:您能确定finish()将调用onDestroy()吗
首先,这个答案假设您指的是Android的活动
类及其finish()
方法和onDestroy()
生命周期方法
其次,这取决于您对“确定”的定义:
- 您的进程可能在
和finish()
之间终止,原因与触发调用onDestroy()
finish()的原因无关
- 设备制造商或ROM调试器可能会引入一些扭曲的变化,这会破坏
和finish()
onDestroy()之间的连接
- 在
和finish()
ondestory()
- 等等
finish()。你可以通过阅读来判断finish()
通常触发对onDestroy()的调用
一般来说,finish()
最终将导致调用ondestory()
。不,您不能确定强>
调用finish()通常会根据活动生命周期触发onDestroy(),但您不能依赖它。特别不是为了保存数据。清楚地说
do not count on this method being called as a place for saving data!
并非总是如此,正如在documentation@blackbelt,您可以参考该特定文档吗?在流程中,我可以依赖onDestroy()吗?比如说,我有A,B,C,D,E活动,并且想完成除E以外的所有活动,那么是否会调用所有的onDestroy()方法?电池和内存状态在这里不算。@Jenix:如果进程没有终止,并且您没有触发崩溃(未处理的异常),完成一个活动将导致对该活动调用onDestroy()
。太快了哈哈。谢谢大家!@androiddeveloper:finish()
不是final
,因此它可能会被重写,在某些情况下,由于某种奇怪的原因,重写实现可能会选择不链接到超类。而且,至少从理论上讲,在finish()
和onDestroy()
之间可能会发生崩溃,尽管我不知道会发生这种情况。@commonware不要紧。我想我明白了。我得到了一个非常旧的代码,出于某种原因,它通过后台线程在当前活动上“同步”,同时在UI线程上调用“setResult”(它也在当前活动上同步)。因此,它导致了奇怪的问题(可能是ANR或死锁,或者类似的问题)。