2017-07-26 75 views

回答

1

号当活动A进入前台它始终保证活动A的onStart()被称为。您可以将log.i()放在onCreate(), onStart()回调中查看自己。但是,如果您处于低内存和GC状态,请清除活动A的状态savedInstanceState,那么系统需要再次调用onCreate()

因此,根据系统的内部条件,有时会调用onCreate(),有时onStart()或有时onResume()。没有保证。

enter image description here

你看上面的图片,后退箭头指向的onCreate(),有时在onStart(),有时在onPause()。

+0

内存不足可能会导致活动被破坏(以及随后当您返回到它重新创建),但没有“明确的”'savedInstanceState'。实际上,'savedInstanceState'将会写入任何内容,这正是允许系统安全销毁和重新创建活动的原因。 –

+0

@ BenP。基于LifeCycycle有不同版本的savedInstanceState。 savedInstanceState是Bundle的实例。捆绑,默认情况下,不是持久的。在低内存中,如果onStart()的savedInstanceState被销毁,则OS使用onCreate()的savedInstanceState重新创建Activity。您必须使用PersistentBundle来保证您可以恢复任何活动状态。 –

+0

因此'onStart'不保证被调用? “onResume”呢? –

0

不,你的父活动可以在任何时间被破坏,因为它可以调用的onResume()。

这取决于手机内存,尝试做一个低规格的手机上,可能会调用的onCreate()

1

没有,只有onResume()是保证被调用。

enter image description here

+0

如果活动A已被销毁,然后onCreate()和onStart()被调用,但不onResume() –

+0

我只是说,只有onResume保证被调用..如果活动被操作系统销毁然后是的,onCreate是再次调用... –

相关问题