如何正确注册/取消注册ContentObserver

时间:2017-07-12 12:35:50

标签: android android-contentprovider android-lifecycle contentobserver

我解释了我的场景:我有一个应用程序可以在自己的数据库中保存一些"联系人"取自设备。

让我们说:

  1. 我的应用程序位于前台,显示从db
  2. 获取的联系人
  3. 用户打开设备联系人列表并删除联系人" Mark Smith"
  4. 用户返回我的应用
  5. 在第3点,我的应用必须知道发生了什么事情,并且可能删除了联系人" Mark Smith"来自它的DB。

    因此,为了听取ContactsContract.Contacts更改,我使用了ContentObserver

    我读到我应该在ContentObserver注册onResume()并在onPause()取消注册;当然,遵循此规则,ContentObserver在我的方案中不起作用,因为当用户打开设备联系人列表时,我的应用会调用onPause()并取消注册我的ContentObserver,所以当用户回到我的应用程序,我的应用程序不知道ContactsContract.Contacts上发生了什么变化。

    根据您的经验,我可以在ContentObserver注册onCreate()并在onDestroy()取消注册吗? 我阅读的所有地方都使用ContentObserveronResume()管理onPause()以避免内存泄漏。

    谢谢你们。

0 个答案:

没有答案