Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将活动带到前台会调用其onCreate方法吗?_Android - Fatal编程技术网

Android 将活动带到前台会调用其onCreate方法吗?

Android 将活动带到前台会调用其onCreate方法吗?,android,Android,这是一个不言自明的问题。如果我从活动A启动活动B,用户随后按back或home,则活动B将被销毁,活动A将返回前台。现在是否保证调用活动A的onCreate方法?在我看来是这样的。我只是想看看 否,您的父活动可以随时销毁,因为它可能会调用onResume() 这取决于手机内存,尝试在低规格手机上执行此操作,可能会调用onCreate()否。当活动a进入前台时,始终保证调用活动a的onStart()。您可以将log.i()放入onCreate()、onStart()回调中以检查您自己。但是,如果内

这是一个不言自明的问题。如果我从活动A启动活动B,用户随后按back或home,则活动B将被销毁,活动A将返回前台。现在是否保证调用活动A的
onCreate
方法?在我看来是这样的。我只是想看看

否,您的父活动可以随时销毁,因为它可能会调用onResume()


这取决于手机内存,尝试在低规格手机上执行此操作,可能会调用onCreate()

否。当活动a进入前台时,始终保证调用活动a的
onStart()
。您可以将
log.i()
放入
onCreate()、onStart()
回调中以检查您自己。但是,如果内存不足,并且GC碰巧清除了活动A的
savedInstanceState
状态,那么系统需要再次调用
onCreate()

因此,根据系统的内部条件,有时它调用
onCreate()
,有时调用
onStart()
,有时调用
onResume()
。什么都不能保证

如上图所示,返回箭头指向onCreate(),有时指向onStart(),有时指向onPause()

否,仅保证调用
onResume()


内存不足可能会导致您的活动被销毁(并在返回时重新创建),但这不会“清除”
savedInstanceState
。事实上,
savedInstanceState
将包含写入其中的任何内容,这正是允许系统安全地销毁和重新创建活动的原因。@BenP。基于生命周期,存在不同版本的savedInstanceState。savedInstanceState是Bundle的实例。默认情况下,Bundle不是持久的。在内存较低的情况下,如果onStart()的savedInstanceState被销毁,则操作系统将使用onCreate()的savedInstanceState重新创建活动。您必须使用PersistentBundle来保证可以恢复活动的任何状态。所以
onStart
不保证被调用?恢复时的
情况如何?@问题是,活动中没有任何保证。这是基于不同的条件。所有的回调,比如onCreate()、onStaret()等都是由系统触发的。上面Uddhav的评论大多是错误的。如果活动是第一次启动或销毁后重新创建的,则会调用onCreate()、onStart()和onResume()。如果活动A已销毁,则会调用onCreate()和onStart(),但不会调用onResume()。我刚才说,保证只调用onResume。。如果该活动被操作系统破坏,则会再次调用onCreate。。。