我有一个同步问题。我已经搜索并找不到与我的条件相同的问题。欢迎指点。
Eclipse 4.2.1 上的 Android 4.1.2
我有两个活动;我们称它们为 ListActivity 和 DetailActivity。在 ListActivity 上按下按钮,我启动 DetailActivity。当用户对 DetailActivity 中的数据进行更改然后单击后退按钮时,我想做两件事。首先,如果脏标志为真,我想保存对数据库的更改。其次,我想返回一个 Intent 给 ListActivity 的 onActivityResult() 方法。
问题是时机之一。由于我想做数据库更新,我读到最好在 DetailActivity 的 onStop() 方法中执行此操作。更新数据库后,我立即设置 Intent 并在 DetailActivity 中调用 setReult() 方法。
_resultIntent = new Intent();
_resultIntent.putExtra(ListActivity .DETAIL_RESULT, _currentData);
Log.d("ListActivity.setUpReturn()", "checkpoint");
setResult(Activity.RESULT_OK, _resultIntent);
在我有机会设置结果之前调用 ListActivity 的 onActivityResult() 方法。我在整个过程中都放置了 Log 调用,似乎发生的情况如下:
1) 用户在 DetailActivity 中并更改了一些数据,将脏标志设置为 true。
2) 用户点击系统返回按钮。
3) DetailActivity 从屏幕上消失。
4) ListActivity 重新出现。
5) 日志记录了 ListActivity 的 onActivityResult()、onRestart()、onStart() 和 onResume() 方法按该顺序执行
6) 记录了其他一些内容。
7) 日志最后注意到 DetailActiviy 的 onStop() 方法执行。
这意味着当我更新数据库并设置结果 Intent 时,调用活动已经超过了使用它的时间点。
我宁愿不经常更新数据库。我宁愿像最佳实践所说的那样将它放入 onStop() 方法中,但我不知道如何解决时间问题。有什么建议么?我在做一些明显错误的事情吗?