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或死锁,或者类似的问题)。