在安卓系统中保存意图数据

3

我正在使用Android Studio创建一个简单的调查应用程序。我有多个意图,并且在按下“下一步”按钮时启动每个意图。我还有一个返回按钮,如果用户想更改问题的答案,则将其带回到上一个意图。当我再次前进时,没有一个答案被保存。如何使所有用户的答案都得以保留?


3
onPause回调方法中保存存储在字段中的数据。 - EpicPandaForce
请见http://developer.android.com/training/basics/data-storage/index.html。 - RvdK
4个回答

3

您可以在活动中覆盖两种方法:

public void onSaveInstanceState(Bundle savedInstanceState);
public void onRestoreInstanceState(Bundle savedInstanceState);

正如您所看到的,您可以访问Bundle“savedInstanceState”。如果用户终止了一个活动,则会调用onSaveInstanceState(),您有可能保存要稍后恢复的数据。

方法onRestoreInstanceState()仅在您在onSaveInstanceState()中保存信息时才会被调用,并为您提供了恢复该数据的机会。它提供了一个包含与您在onSaveInstanceState()期间保存到数据中相同数据的bundle。

Bundle基本上是一个键值列表。例如,要存储字符串,只需调用bundle的putString()方法即可:

savedInstanceState.putString("myKey", "Hello World");

在Bundle中,有许多数据类型可以存储(通常,实现接口Parcelable的每个类都可以存储在Bundle中)。

更多信息:

http://developer.android.com/training/basics/activity-lifecycle/recreating.html http://developer.android.com/reference/android/os/Bundle.html


我希望调查答案能够被物理保存,这样当用户勾选复选框或输入文本时,他们不必重新填写调查问卷。有没有办法实现这个功能? - jmc

0
使用单例模式类来存储您的数据,并将其保存在列表或数组中,如何? 您可以为此扩展Application类,也可以自己创建单例模式类。

当应用程序在后台被杀死时,这些数据将会丢失。 - Alexander Kulyakhtin
很抱歉要说,但安卓本身提供了更好的选择。 - RvdK
我并没有说这是最好的,而且在切换活动时将数据保存到数据库是很基础的操作...所以我认为那部分很清楚。 - BooNonMooN

0

-1
你可以实现一个单例类,并在扩展了Application的应用程序中使用它。 通过映射将数据存储到单例中,并提供getter和setter方法。

单例类可能不是一个好的方法,因为它是一个全局状态,可能很难测试。另一个问题是,如果Android在后台运行时间较长,应用程序被杀死,那么您的单例将不可用。 - Stefan Wanitzek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接