2014-09-19 23 views
0

我正在创建一个简单的android应用程序,它可以与sqlite一起使用。在一项活动中,它向用户显示数据,在另一项活动中,用户可以操纵数据。
现在问题在于,当用户在第二个活动中更改数据并按下后退按钮时,onResume()方法将被调用并从数据库中读取数据,但在更新完成之前会显示错误的数据(更改前的数据)。
如果用户重新启动程序,它将显示正确的数据。我想也许它有同步问题。Android SQLite在update语句提交前读取数据

更新语句在第二个活动的onDestroy()方法中执行,并在第一个活动中立即选择在onResume()中执行的语句。

我能做些什么来解决这个问题,并始终在第一个活动中看到正确的数据?
如果有必要,我可以附上代码。 在此先感谢。

+0

失败的设计缺陷。您最好在用户更改数据时保存数据。在onPause的生命周期中。 onDestroy()用于清理任务等。 – danny117 2014-09-19 18:17:15

回答

0

您必须实现对数据加载更改时调用的第一个活动的回调。在回调方法中,活动会更新显示的数据。随和。

请注意,如果你不知道该怎么做:我不会提供代码示例。这不是Stack Overflow社区的工作。只需谷歌它并尝试一下。

+0

感谢您的帮助,但我正在寻找一种方法来锁定数据库,以便在更新没有提交时select语句将等待。 – 2014-09-19 22:03:46

0

看看这个从DOC:

活动A开始Acivity B:

Activity A's onPause() method executes. 
Activity B's onCreate(), onStart(), and onResume() methods execute in sequence. (Activity B now has user focus.) 

然后,如果活动A不再是可见的屏幕上,其的onStop() 方法执行。这种可预测的生命周期回调序列 允许您管理从一个活动 到另一个活动的信息转换。例如,如果您必须在第一个活动停止时写入数据库,以便以下活动可以读取该数据库,那么您应该在onPause()期间而不是在 onStop()期间写入数据库。

so活动A onDestroy还没有被调用,所以你错过了正确的数据,你应该怎么做?在onPause()中更新或设置button的监听器,并在该监听器中进行更新。

http://developer.android.com/guide/components/activities.html