[英]Handle “Don't keep Activities” in android app
我有2个活动 :显示信息给用户的列表中的活动 ,它的子活动 ,用户可以创建新的信息。
很明显,从第一个活动开始,我调用“ startActivityForResult ()”,当用户将他想要的内容放入第二个活动时,我回到第一个活动,并在“ onActivityResult ()”函数中收到信息保存信息。
我的问题是“不要保持活动”选项。 我读到这种情况发生在低内存电话中。 但是,当设备关闭活动时,我们如何处理?
在我的示例中, 当第二个活动被调用时,第一个活动被杀死 ,因此当我们返回到该活动时发生崩溃,并且我的信息丢失了。
处理这个问题的正确方法是什么? 知道我无法在第二个活动中保存我的信息,因为我正在使用文件。
将SharedPreferences用于您的目的。 顺便说一句,您可以在关闭活动时使用此技术存储数据。
获取您的类数据,使用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();
....
当您加载以前的活动时:
String loadedMyDataStr = mPrefs.getString("stored", "");
MyData data = gson.fromGson(loadedMyDataStr, MyData.class );
正如您所说,在onPause
方法调用之后的任何时候都可以杀死每个活动。 您可以从onPause
的第一个活动存储ListView状态并将其加载到onResume
- 您可以使用单例来实现此目的。
您在onPause
的操作也应该尽可能快,不要在那里进行任何复杂的操作。 否则,您的应用程序可能看起来已冻结,用户无法与之交互...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.