为什么以及何时取消注册android中的内容观察者

Nik*_*wal 8 java android contentobserver

我正在开发一个Android应用程序,并第一次与内容观察者合作.所以我阅读了很多教程并得到了为什么提供它以及如何使用它的概念.

现在我已经在博客上阅读了这些内容

别忘了取消注册内容观察者

所以,我无法理解我是否要注册ContentObserver然后我必须取消注册的情况.

如果观察者的目的得到满足,那么它可以取消注册.但我必须观察直到用户卸载应用程序,然后我将取消注册观察者.

这是该博客的网址

http://www.grokkingandroid.com/use-contentobserver-to-listen-to-changes/

Vin*_*ele 14

看看活动生命周期:

活动生命周期

  • 如果您在onCreate注册中注册观察者,请注销onDestroy
  • 如果您在onStart注册中注册观察者,请注销onStop
  • 如果您在onResume注册中注册观察者,请注销onPause

由于只能同时显示一个活动,我建议使用最后一个选项.


Unk*_*own 6

请仔细阅读您提供的链接

您在onResume()生命周期方法中注册观察者,并在onPause()方法中取消注册它.

一旦你取消注册这些方法之一.它将没有observe任何值,也不会给任何值memory leak.

  @override

    public void onDestroy()
    {

getContentResolver().
      unregisterContentObserver(yourObserver);

    }
Run Code Online (Sandbox Code Playgroud)

或者你也可以这样做

 @override

    public void onPause()
    {
    getContentResolver().
  unregisterContentObserver(yourObserver);

    }
Run Code Online (Sandbox Code Playgroud)


Pra*_*gar 5

想象一下,你有一个应用程序让我们说一个朋友列表屏幕创建使用FriendListActivity.现在,要为此活动创建UI,您可以从数据库中读取数据并创建UI.

现在假设您还有一个在后台运行的服务,并使用Web服务将此数据库与远程数据库同步.

现在,只要服务更新数据库中的好友列表,您也需要相应地更新UI.因此,要实现这一点,您将在朋友发布FriendListActivity时注册内容观察者(假设知道其概念),这样每当数据库中的朋友列表发生变化时,您也会更新您的朋友列表.现在,如果用户退出您的活动或关闭应用程序,那么您不需要更新UI(因此您不需要获取更改数据库的事件),因此您将取消注册内容观察者.ActivityURIURIFriendListActivity

现在,当用户下次访问此屏幕时,您将再次获取最新数据并向DB注册以进行内容更改...

因此,内容观察者通常是活动和数据库(或特定URI)之间的关系.因此,您将Activity在启动时注册它,并在活动退出视图时取消注册它.

希望这可以帮助...