How is bundle sent to onCreate if App process killed?
在活动生命周期图中,有一个箭头从"onstop"到"app process killed"到"oncreate"。我一直在想,现在我要做一个关于片段的小讨论;如果整个应用程序进程被破坏,OnCreate如何能够从OnStop接收捆绑包?系统是否跟踪被杀的应用程序及其活动包?我认为这就是它将如何做的,因为在那个时候,被杀死的应用程序将被零内存分配给它。
此外,从管理活动生命周期>启动活动页面的最后一段,"系统在除一个:…之外的所有情况下都调用了onPause()和onStop()之后调用OnDestroy(),并且其中一个情况没有说明内存不足。这让我觉得箭头永远不应该从OnStop转到OnCreate,因为"具有更高优先级的应用程序需要内存"。这是打字错误还是我读错了?我想我读错了,因为"可杀人"?"一般来说,活动生命周期中的移动如下:"图表。
其中一个必须是错误的,要么是活动生命周期图中的箭头,要么是"系统在除一个:…之外的所有情况下都调用了onPause()和onStop()之后调用OnDestroy()"。希望我是在断章取义。
How is it possible for onCreate to receive the bundle from onStop if the whole app process is destroyed?
它不"从顶层接收包",因为
Does the system keep track of killed apps and their activity bundles?
操作系统跟踪未完成的任务。在一段时间内(自上次使用后约30分钟),它会跟踪实例状态
The system calls onDestroy() after it has already called onPause() and onStop() in all situations except one
存在多个不调用
OnCreate很可能在onStop()之后调用。您可以使用onSaveInstanceState()传递包,该函数在活动或片段暂停或停止时调用。假设你有一个活动,然后按Home。同时调用OnStop和OnSaveInstanceState。在OnSaveInstanceState中,保存包以保存应用程序的状态。应用程序在后台的时间太长,因此被终止。然后,当您打开应用程序备份时,在savedinstancestate参数中,从onsaveInstanceState传递给oncreate的bundle将被重新创建。更多详情请参见官方文档https://developer.android.com/training/basics/activity-lifecycle/recreating.html