android - 在哪里可以使用 onSaveInstanceState 传递不同 Activity 的参数?

标签 android android-activity activity-lifecycle

对于 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/

相关文章:

java - 找不到与给定名称匹配的资源

android - 如何完成销毁的 Activity

android - 如果方向改变, Activity 在 onActivityReenter 之后销毁

android - 始终从 android 抽屉导航的第一项开始

android - Intent.FLAG_ACTIVITY_CLEAR_TOP 销毁目标 Activity 。如何避免?

android - 是否有可能让 Android Glide 等待/重新加载保存在另一个线程中的图像?

java - 在 Java 中从 XML 获取属性值

android - 带抽屉布局的 fragment 管理

android - 退出Activity后如何释放实际的Activity对象内存?

android - 如何在 Activity 中访问布局-大布局?