如果 App 进程被杀死,bundle 如何发送到 onCreate?

flo*_*cca 3 android activity-lifecycle

在活动生命周期图中,有一个从“onStop”到“应用程序进程已终止”到“onCreate”的箭头。一直想知道,现在我要对片段做一个小讨论;如果整个应用程序进程被销毁,onCreate 如何从 onStop 接收包?系统是否会跟踪被杀死的应用程序及其活动包?我认为这就是它的方式,因为那时被终止的应用程序将分配给它的内存为零。

此外,从页面管理活动生命周期>启动活动的最后一段,“系统在所有情况下调用 onPause() 和 onStop() 之后调用 onDestroy(),除了一种情况:...'情况并未说明为内存不足。这让我认为箭头不应该从 onStop 转到 onCreate 因为“具有更高优先级的应用程序需要内存”。这是一个错字还是我读错了?我想我'因为'Killable'而读错了吗?'一般而言,活动生命周期的运动如下所示:'图表。

其中之一必须是活动生命周期图表中的箭头或“系统在它已经调用 onPause() 和 onStop() 之后调用 onDestroy() 之后在所有情况下除了一种:...”语句错误。希望我是在断章取意的情况下阅读的。

Com*_*are 5

如果整个应用程序进程被销毁,onCreate 如何从 onStop 接收包?

它不会“从 onStop 接收包”,因为onStop()它与Bundle. 在Bundle交付给onCreate()onRestoreInstanceState()包含在前面的数据放BundleonSaveInstanceState()。其内容Bundle跨进程边界传递到管理未完成活动及其任务状态的核心操作系统进程。如果相关,该内容将传递回应用程序的新进程。

系统是否会跟踪被杀死的应用程序及其活动包?

操作系统会跟踪未完成的任务。一段时间(自上次使用后约 30 分钟),它会跟踪Bundle任务活动的实例状态。

系统在调用 onPause() 和 onStop() 之后调用 onDestroy(),除了一种情况

onDestroy()不调用的情况不止一种。由于内存不足而终止进程可能会或可能不会导致onDestroy()被调用,具体取决于系统 RAM 需求的紧迫性。