是否保证调用Activity.onStop()(API 11 +)

时间:2015-04-01 15:43:42

标签: android-activity activity-lifecycle

目前尚不清楚(至少对我来说)文档是否保证调用Activity.onStop。有两个地方看似矛盾的信息。

  1. Javadoc for Activity.onStop:
  2.   

    请注意,在内存不足的情况下,可能永远不会调用此方法,在这种情况下,系统没有足够的内存来保持活动的进程在调用onPause()方法后继续运行。

    1. 活动类http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle的文档(特别是' Killable'列):
    2.   

      从Honeycomb开始,应用程序在返回onStop()之前不处于killable状态。这可能会在调用onSaveInstanceState(Bundle)时产生影响(可以在onPause()之后安全地调用它,并允许和应用程序安全地等到onStop()以保存持久状态。

      找到两种文件都说实话的方法有点困难。我能想到的唯一场景是:假设您正在使用目标API 21(使用min sdk 10)进行开发,并使用onStop()方法编写Activity。如果您随后在API 10手机上运行此应用程序,则无法保证调用onStop()。这种情况意味着上述第1点和第2点的文档都是正确的。否则,其中一个必须是假的。

2 个答案:

答案 0 :(得分:10)

  

保证Activity.onStop()被调用(API 11 +)

是的,保证在后蜂窝设备(API 11 +)

上调用

来源1:Video tutorial on Activity life cycle - taught by Google developer advocate

来源2:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Image screenshot from developer.android.com

来源3:AndroidLifeCycle article on www.vogella.com

Image screenshot from www.vogella.com

答案 1 :(得分:0)

如果你向下看ActivityLifeCycle reference,它会说:

  

对于那些未标记为可计费的方法,系统不会从调用方法开始并在返回后继续执行活动的进程。因此,活动处于可填充状态,例如,在onPause()之后到onResume()的开始之间。

由于这似乎重新强制执行第1点,我会在保守的方面犯错并设计和规划我的代码,好像第1点是真的并忽略第2点。