我有 2 个 Activity :一个向用户显示信息列表的 Activity ,以及用户可以在其中创建新信息的子 Activity .
很明显,从第一个 Activity 开始,我调用了“startActivityForResult()”,当用户在第二个 Activity 中输入他想要的内容时,我回到第一个 Activity 并收到在onActivityResult()"函数中保存信息。
我的问题是“不保留 Activity ” 选项。我读到这发生在低内存手机中。但是,当设备关闭 Activity 时,我们如何处理呢?
在我的示例中,当第二个 Activity 被调用时,第一个 Activity 被杀死,所以当我们返回那个 Activity 时发生崩溃,我的信息丢失了。
处理该问题的正确方法是什么?知道我无法在第二个 Activity 中保存我的信息,因为我正在使用文件。
最佳答案
使用SharedPreferences达到你的目的。顺便说一句,您可以在完全关闭 Activity 时使用此技术来存储数据。
获取您的类数据,使用 GSON
将其转换为字符串并存储。
加载时,只需将它从 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 );
关于android - 在 Android 应用程序中处理 "Don' t 保留 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439300/