什么时候调用onSaveInstanceState()方法的情况?

时间:2011-07-13 11:20:59

标签: java android

我阅读的所有资料都提到了几个案例,并以“其他一些案例”结束。在视图/活动中调用onSaveInstanceState方法时的所有情况是什么?

7 个答案:

答案 0 :(得分:7)

每当有活动的软杀伤时。即当方向改变或由于内存不足而导致进程被android杀死时。

当用户故意离开活动时,不会调用它。

请参阅此链接:https://sites.google.com/site/jalcomputing/home/mac-osx-android-programming-tutorial/saving-instance-state

答案 1 :(得分:7)

如果视图具有id,则默认情况下将为视图调用onSaveInstanceState()。

谷歌说:“默认实现通过在层次结构中具有id ”的每个视图上调用onSaveInstanceState()来为您处理大多数UI每个实例状态。

更多信息here

答案 2 :(得分:5)

doc

  

在活动被杀之前调用此方法,以便在将来某个时间返回时可以恢复其状态。

答案 3 :(得分:5)

另请注意,可以在onSaveInstanceState onCreateonCreateViewonActivityCreatedonStart之后直接在片段上调用onResume如果片段附加到活动但未显示,则销毁,则不会被调用)。因此,您需要确保onSaveInstanceState中引用的所有内容都在onCreate中初始化,否则您将冒NullPointerException的风险。

答案 4 :(得分:3)

    当方向发生变化时,会调用
  • onSaveInstanceState() 或用户按下主页按钮。
  • 如果前面有另一项活动 活动和操作系统杀死隐藏的活动以免费 内存(或在其他地方需要内存时),然后调用onSaveInstanceState(),以便活动可以保存其状态信息,当用户下次启动该活动时,使用onRestoreInstanceState()恢复该状态信息。
  • Android的默认视图通过调用来保存其状态 View.onSaveInstanceState,由onRestoreInstanceState
  • 的默认实现恢复

根据doc

  

如果用户与活动交互并按下后退按钮或   如果调用了活动的finish()方法,则活动为   从当前活动堆栈中删除并回收。在这种情况下   没有要保存的实例状态和onSaveInstanceState()   方法未被调用。

     

如果用户与活动交互并按下主页按钮,   必须保存活动实例状态。 onSaveInstanceState()   方法被调用。如果用户重新启动应用程序,它将恢复   或重新启动上次运行的活动。如果它重新启动它的活动   为bundle提供保存数据到onRestoreInstanceState()   和onCreate()方法。

     

如果你覆盖onSaveInstanceState()和onRestoreInstanceState()你   应该调用它的超级实现,因为默认视图   Android通过调用View.onSaveInstanceState来存储他们的数据   来自活动的onSaveInstanceState()方法。例如   EditText通过此方法的默认调用来存储其内容。

答案 5 :(得分:1)

当用户按下“返回”按钮时,此方法没有调用,这是其中一种情况..

答案 6 :(得分:1)

只要活动不在视图中,就会调用onSaveInstanceState。就像当你按home键时,调用onSaveInstanceState。