繁体   English   中英

在Android应用程序中处理“不要保持活动”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM