我有 2个 Activity :一个 Activity ,向用户显示信息列表,以及它的子 Activity ,用户可以在其中创建新信息。

明确地说,从第一个 Activity 中,我叫“ startActivityForResult ()”,当用户在第二个 Activity 中放入他想要的内容时,我返回第一个 Activity ,并在“ onActivityResult ( )”功能来保存信息。

我的问题是“不保留 Activity ” 选项。我读到这发生在低内存电话中。但是,当设备关闭 Activity 时,我们该如何处理呢?

在我的示例中,当调用第二个 Activity 时使用,第一个 Activity 被杀死,因此当我们返回该 Activity 时会发生崩溃,并且我的信息会丢失。

处理该问题的正确方法是什么?知道由于我正在使用文件而无法在第二个 Activity 中保存信息。

最佳答案

使用SharedPreferences达到您的目的。顺便说一句,您可以在完全关闭 Activity 时使用此技术来存储数据。

获取您的类数据,使用GSON将其转换为String并存储。

加载时,将其从SharedPreferences中移出,然后从String转换回您的Object。

假设您有MyData类,其中包含所有无效信息。

MyData myData = ....;

SharedPreferences mPrefs = context.getSharedPreferences("MyPrefs", 0);
Gson gson = new Gson();
String toStore = gson.toJson(myData);


SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("stored", toStore);
editor.commit();

 ....

当您加载上一个 Activity 时:
String loadedMyDataStr = mPrefs.getString("stored", "");
MyData data = gson.fromGson(loadedMyDataStr, MyData.class );

10-07 19:19
查看更多