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