8

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

很明显,从第一个活动开始,我调用了“ startActivityForResult ()”,当用户将他想要的内容放入第二个活动时,我回到第一个活动,并在“ onActivityResult ()”函数中接收到信息保存信息。

我的问题是“不要保留活动”选项。我读到这发生在低内存手机中。但是当设备关闭活动时我们如何处理呢?

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

处理它的正确方法是什么?知道我无法在第二个活动中保存我的信息,因为我正在使用文件。

4

2 回答 2

3

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

获取您的类数据,通过使用将其转换为字符串GSON并存储。

加载时只需将其SharedPreferences从字符串中移出并转换回您的对象。

假设您有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 );
于 2012-11-18T10:35:14.697 回答
1

onPause正如您所说,每个活动都可以在方法调用后随时终止。您可以从第一个活动中存储您的 ListView 状态onPause并将其加载onResume- 您可以为此目的使用单例。

此外,您的操作onPause应该尽可能快,不要在那里进行任何复杂的操作。否则,您的应用程序可能看起来像已冻结,并且没有用户可以与之交互...

于 2012-11-18T10:36:00.623 回答