gpt4 book ai didi

android - onPause/onRestore 与 savedInstanceState

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:43 24 4
gpt4 key购买 nike

我是 android 开发的新手,我需要一些帮助来保存 Activity 的状态。从 onPause 保存实例并从 onRestore 恢复实例的正确方法是什么,因为显然 Android 不会像使用 onCreate 或 onSaveInstanceState 那样发送 savedInstanceState Bundle。还是有比使用 savedInstanceState 包更好的保存方法?

这有意义吗?

[编辑]好吧,我想我知道我真正的问题是什么......但首先,我认为我正在寻找的是使用 SharedPreferences 而不是 savedInstanceState。

因此,通过查看更多调试日志,我注意到不是将 Activity 带到堆栈的顶部,而是创建了一个新的。是的,我意识到我正在创造一个新的....

         Intent itemintent = new Intent(MediaList.this, AudioPlayer.class);

Bundle b = new Bundle();
//...putString some strings to send
itemintent.putExtra("android.intent.extra.INTENT", b);
itemintent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(itemintent,0);

...但是 FLAG_ACTIVITY_REORDER_TO_FRONT 不应该阻止它创建新 Activity 吗?我猜它认为它必须创建一个新的,因为我要发送一些字符串?

更好的是,只要字符串相同,我如何检查 Activity 是否已在堆栈中并切换到它? -- 当用户从 ListView 中单击媒体项时,我将开始此 Activity 。[/编辑]

最佳答案

出于某种原因,这并没有用非常非常大胆的 NEON 闪烁字母记录下来,我花了一段时间才发现,但是如果你只是用 android:launchMode=["多个"| “单顶” | “单任务” | “单一实例”]属性设置为“singleInstance”。

那么它只有一个实例,只要 Activity 没有被垃圾回收,您的内存字段就会被保留下来。

您可以做的另一件事是创建一个应用程序(从应用程序扩展)并将所有持久对象存储在其中......就您的整个应用程序的生命周期而言(包括您所有的无 Activity 服务)。

只需创建一个 Application 类并在您的 list 中指定它,如下所示:

<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name=".MyApplication">

然后,如果您仍然真的想在应用程序将要关闭的情况下保存您的值,只需使用 SharedPreferences。

关于android - onPause/onRestore 与 savedInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com