对于 Acitivity,已经有一个名为 onSaveInstacestate(Bundle) 的方法,用于存储被覆盖方法的 Activity 数据。
如我所见,有两个不同的 onSaveInstanceState,其中参数的传递方式不同,如下所示。
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
{
super.onSaveInstanceState(outState, outPersistentState);
Log.i("test", "onSaveInstanceState called **********");
}
和
@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
Log.i("test", "onSaveInstanceState with bundle only called");
}
那么,在什么情况下可以使用这两种方法呢? 请详细描述。 提前致谢。
最佳答案
这值得一个扩展的答案。正如已接受的答案所述,自 API 级别 21 以来,onSaveInstanteState
有一个额外的重载。
自 API 级别 1 ( Docs) 起可用:
void onSaveInstanceState(Bundle outState)
API 级别 21 ( Docs ) 引入的附加功能:
void onSaveInstanceState (Bundle outState, PersistableBundle outPersistentState)
后一个带有 PersistableBundle
的不是前一个的替代品。它仅在 Activity
属性 R.attr.persistableMode
时使用设置为 persistAcrossReboots
。当这样的 Activity
将被持久化时,将调用 onSaveInstanceState (Bundle outState, PersistableBundle outPersistentState)
并且您会收到一个 PersistableBundle
来存储您的实例状态。
使用 R.attr.persistableMode
恢复 Activity
的状态设置为persistAcrossReboots
,有
void onRestoreInstanceState(Bundle savedInstanceState,PersistableBundle persistentState)
请注意,如果调用具有 PersistableBundle
的那个,则不会调用 onRestoreInstanceState (Bundle savedInstanceState)
。我假设 onSaveInstanceState
也是如此,但我没有检查过它,文档在 API 级别 28 时也没有提到它。
onCreate()
也有适当的重载.
关于android - 在哪里可以使用 onSaveInstanceState 传递不同 Activity 的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37428867/