我正在观看谷歌的一个应用评论,他们正在翻阅这个有保存按钮的应用,如果你在离开之前没有保存,它会弹出一个对话框。他们说安卓应用程序应该只是保存而不打扰用户。
我有一个片段,有几个字段,需要确定何时将数据保存到 SQLite 数据库中。我正在考虑通过onFocusChange
事件节省每个字段的退出?或者这可能太频繁了?也许片段的onPause
事件?我应该什么时候保存(请具体事件)?
Fragments
与生命周期非常相似activities
。保存持久状态的正确位置也是如此onPause()
,以后onPause()
可能为时已晚并且可能导致数据丢失。Google 建议使用“就地编辑”用户模型。也就是说,立即保存编辑,在您的情况下,当用户在输入字段之间切换时保存数据是一种好方法。如果您的Fragment
/Activity
被系统杀死,这可以防止数据丢失。如果您认为保存状态可能需要几秒钟,您也可以IntentService
在onPause()
. 在您的场景中,AsyncTask
当用户在输入字段之间切换时,我将执行更新您的数据库,可能会检测是否确实发生了更改。
编辑:如果您使用的是ContentProvider
比考虑使用AsyncQueryHandler而不是AsyncTask
.
public void onDestroy()
Called when the fragment is no longer in use. This is called after onStop() and before onDetach().
我可能会使用它;这意味着用户已完成使用该片段。我不知道以这种方式或您的方式这样做有什么缺点。