我正在开发Android应用程序一段时间,并关注了很多有关活动生命周期和应用程序生命周期的文章。
[我知道Activity.finish()
方法调用到Activity.onDestroy()
的某个位置,并且还从堆栈中删除了活动,我想它以某种方式指向了操作系统和垃圾收集器,他可以“尽其所能”并释放内存当它觉得是个好时机。...
我来到了这篇文章-Is quitting an application frowned upon?并阅读Mark Murphy的答案。
[这让我对finish()
方法的实际作用有些困惑。
是否有机会我叫finish()
而不会叫onDestroy()
?
在活动上调用finish()
时,将执行方法[[onDestroy()
。此方法可以执行以下操作:
onDestroy()
onDestroy()
运行并返回后,您的实例仍然有效并且运行良好。Android会保留进程,以防用户想要重新启动应用程序,这将加快启动阶段。该进程不会做任何事情,如果需要回收内存,该进程将被杀死onCreate()]中调用finish():
onCreate()-> onStart()-> onResume()
。如果用户退出,应用程序将调用-> onPause()-> onStop()-> onDestroy()例如:
onCreate() counter part is onDestroy()
onStart() counter part is onStop()
onPause() counter part is onResume()
onDestroy()
用于最终清理-释放您可以自己使用的资源,关闭打开的连接,读取器,写入器等。如果您不重写它,系统将执行它必须执行的操作。finish()
确实将活动的销毁排入队列,这取决于活动的优先级。 finish()
放置在onActivityResult()
回调中,而onResume()
尚未运行,则将首先执行onResume()
,只有在此之后才调用onStop()
和onDestroy()
。] >注意:onDestroy()
可能根本不被调用,如documentation上所述。