我阅读的所有资料都提到了几个案例,并以“其他一些案例”结束。在视图/活动中调用onSaveInstanceState方法时的所有情况是什么?
答案 0 :(得分:7)
每当有活动的软杀伤时。即当方向改变或由于内存不足而导致进程被android杀死时。
当用户故意离开活动时,不会调用它。
答案 1 :(得分:7)
更多信息here。
答案 2 :(得分:5)
doc说
在活动被杀之前调用此方法,以便在将来某个时间返回时可以恢复其状态。
答案 3 :(得分:5)
另请注意,可以在onSaveInstanceState
onCreate
,onCreateView
,onActivityCreated
和onStart
之后直接在片段上调用onResume
如果片段附加到活动但未显示,则销毁,则不会被调用)。因此,您需要确保onSaveInstanceState
中引用的所有内容都在onCreate
中初始化,否则您将冒NullPointerException
的风险。
答案 4 :(得分:3)
根据doc
如果用户与活动交互并按下后退按钮或 如果调用了活动的finish()方法,则活动为 从当前活动堆栈中删除并回收。在这种情况下 没有要保存的实例状态和onSaveInstanceState() 方法未被调用。
如果用户与活动交互并按下主页按钮, 必须保存活动实例状态。 onSaveInstanceState() 方法被调用。如果用户重新启动应用程序,它将恢复 或重新启动上次运行的活动。如果它重新启动它的活动 为bundle提供保存数据到onRestoreInstanceState() 和onCreate()方法。
如果你覆盖onSaveInstanceState()和onRestoreInstanceState()你 应该调用它的超级实现,因为默认视图 Android通过调用View.onSaveInstanceState来存储他们的数据 来自活动的onSaveInstanceState()方法。例如 EditText通过此方法的默认调用来存储其内容。
答案 5 :(得分:1)
当用户按下“返回”按钮时,此方法没有调用,这是其中一种情况..
答案 6 :(得分:1)