如果我在onPause()中保存持久数据,我该如何在以后取消修改?

时间:2011-07-03 12:37:04

标签: android

在android中,我正在尝试创建一个简单的活动,允许我从数据库修改记录。在onCreate方法中,我在活动的不同视图中加载来自数据库的记录数据,允许用户修改信息。如果用户单击“确定”,我会将数据保存到数据库并调用finish()。如果用户单击“取消”,则不保存数据并调用“完成”以返回上一个活动。

现在,我刚刚了解到android文档中recommended将{未保存的更改提交到onPause()事件中的持久数据。

我看到了几个问题。首先,可能会调用onPause(),而字段中的数据不会形成有效记录,因此它无法保存在数据库中。其次,即使数据有效,如果用户稍后点击取消按钮,我也应该保存,因为他不想保存他的更改。我将无法访问原始记录。最后,如果用户单击取消,我调用finish()返回上一个活动onPause()将被调用,数据保存,而不应该。

在我看来,保存onSaveInstanceState()方法提供的Bundle中的所有数据更有意义,如果我的活动被杀死,则从onCreate()方法中实现它。

我该如何处理?

1 个答案:

答案 0 :(得分:1)

这正是onSaveInstanceState()的一种情况。如果您的应用程序未被系统杀死,则当再次显示活动并调用onResume方法时,您的数据仍将存在,因此在这种情况下无需保存任何内容。如果您的应用程序被杀死,onSaveInstanceState应该可以解决问题。 我不会考虑你所描述的未保存的更改,因为正如你自己所说,它可能处于无效状态。这只是一个临时状态。