onPause/onRestore with savedInstanceState

bwo*_*gie 7 android onpause

我是Android开发的新手,我需要一些帮助来保存活动的状态.从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);
Run Code Online (Sandbox Code Playgroud)

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

更好的是,我怎样才能检查活动是否已经在堆栈中并切换到它,只要字符串是相同的? - 当用户从列表视图中单击媒体项时,我正在启动此活动.[/编辑]

Gen*_* S. 3

由于某种原因,这没有以非常非常大胆的霓虹灯闪烁字母记录,并且花了我一段时间才发现,但如果您只是使用 android:launchMode=[ 创建它,则无需担心您的活动是否存在。 “多个”| “单顶”| “单一任务” | “singleInstance”] 属性设置为“singleInstance”。

那么它就只有一个实例,并且只要该活动没有被垃圾收集,您的内存字段就会被保留。

您可以做的另一件事是创建一个应用程序(从应用程序扩展)并将所有持久对象存储在其中...就您的整个应用程序的生命周期而言(包括您的所有活动),它首先创建,最后销毁- 较少的服务)。

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

<application android:icon="@drawable/icon" android:label="@string/app_name"
    android:name=".MyApplication">
Run Code Online (Sandbox Code Playgroud)

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