如果App进程被终止,bundle如何发送到onCreate?

在Activity Lifecycle图中,有一个从'onStop'到'App process killed'到'onCreate'的箭头。 我一直在想,现在我要谈一谈片段; 如果整个应用程序进程被销毁,onCreate如何从onStop接收bundle? 系统是否跟踪杀死的应用程序及其活动包? 我认为这将是如何做到这一点,因为在那时杀死的应用程序将没有分配给它的内存。

此外,从管理活动生命周期>开始活动的页面上的最后一段,“在除了一个之外的所有情况下已经调用onPause()和onStop()之后,系统调用onDestroy()'...'那个我认为这个箭头不应该从onStop到onCreate,因为'更高优先级的应用程序需要内存',这是一个错字还是我读错了?我假设我因为'Killable',它读错了吗? 一般来说,通过活动生命周期的运动看起来像这样:'图表。

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


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

它不会“从onStop接收包”,因为onStop()Bundle无关。 传递给onCreate()BundleonRestoreInstanceState()包含由onSaveInstanceState()放入早期Bundle中的数据。 该Bundle的内容通过进程边界传递给核心OS进程,该进程管理未完成活动及其任务的状态。 这些内容会在相关时返回给您的应用程序的全新流程。

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

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

在除了一个以外的所有情况下,系统已经调用onPause()和onStop()之后,系统会调用onDestroy()

没有调用onDestroy()情况有多种。 由于低内存条件而终止进程可能会或可能不会导致调用onDestroy() ,这取决于系统RAM需求的紧迫性。


onCreate在onStop()之后很有可能被调用。 您可以使用onSaveInstanceState()传递包,该包在任何时候活动或片断暂停或停止时调用。 假设你有一个活动并按回家。 OnStop和onSaveInstanceState都被调用。 在onSaveInstanceState中,保存您的包以保存应用程序的状态。 然后应用程序被杀,因为它在后台太久了。 然后,当您打开应用程序备份时,来自onSaveInstanceState的包会在重新创建时传递给SavedInstanceState参数中的oncreate。 有关更多https://developer.android.com/training/basics/activity-lifecycle/recreating.html,请参阅官方文档

链接地址: http://www.djcxy.com/p/90813.html

上一篇: How is bundle sent to onCreate if App process killed?

下一篇: Activity onStart() not called when resuming an recreated activity from a stack