Geo*_*rge 8 android activity-lifecycle android-activity
我们知道,这样的场景在Android的默认流调用活动的各个onSaveInstanceState,onStop,onDestroy释放参考之前方法Activity的对象.
然而,似乎我有一个案例,当我的应用程序在后台,活动被杀死而没有调用那些方法,但我的应用程序本身不会被破坏.
但是我无法强制重现这一点.每当我在前台使用需要大量资源的应用程序时,整个过程都会被杀死,而不仅仅是活动.
哪种让我感到惊讶,因为我认为低资源上的'app kill'基本上只是旧的信号方式,Android系统是否会在不调用这些方法的情况下立即"杀死"(释放)一项活动?还是我在追逐鬼魂?
Android 系统是否真的会在不调用这些方法的情况下立即“杀死”(释放)一个 Activity?
是的,它确实。以下是文档的相关内容onStop():
请注意,在内存不足的情况下,系统可能永远不会调用此方法,即系统没有足够的内存来在调用其 onPause() 方法后保持活动进程的运行。
以及关于onDestroy():
在某些情况下,系统将简单地终止活动的托管进程,而不调用其中的此方法(或任何其他方法),因此不应使用它来执行在进程消失后仍保留的操作。
不要指望调用此方法作为保存数据的地方!例如,如果某个活动正在内容提供程序中编辑数据,则这些编辑应在 onPause() 或 onSaveInstanceState(Bundle) 中提交,而不是在此处提交。
“但是我无法强制重现这一点。” - 您可以通过在后台发送应用程序然后使用 DDMS 手动终止进程来重现这种情况。