android - 在 Android 应用程序中处理 "Don' t 保留 Activity

标签 android android-activity crash

我有 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/

相关文章:

java - 首次启动 Android 时应用程序崩溃

尝试读取文件时代码崩溃

java - 为什么即使没有错误(HELP),我的应用也会崩溃

javascript - Nativescript 应用程序无需使用服务器即可从本地浏览器接收数据

java - 如何在不重新启动广播接收器的情况下将信息从广播接收器发送回我的主要 Activity

java - 如何从另一个应用程序为我的启动器应用程序获取高 dpi Activity 图标?

java - 单击按钮时如何销毁 Activity ?

java - 改进 Large ListView Adapter 的平滑滚动,有时会出现抖动

android - 在 Snackbar 上移动 cardview - 协调器布局

android - sqlite数据库更新