java为什么以及何时在安卓中注销内容观察员
我正在开发一个安卓应用程序,第一次与内容观察者合作。所以我读了很多教程,了解了为什么要提供它以及如何使用它
现在我在一个博客上读到了这些话
Dont forget to unregister content observers
因此,我无法理解如果我想注册一个ContentObserver
,那么在什么情况下我必须注销它
如果观察者的目的得到了实现,那么就可以取消注册了。但我必须观察,直到用户卸载应用程序,然后我为什么要取消注册观察员
这是那个博客的url
http://www.grokking安卓.com/use-contentobserver-to-listen-to-changes/
# 1 楼答案
请阅读你提供的链接,清楚地提到
在onResume()生命周期方法中注册观察者,然后在onPause()方法中注销观察者强>
一旦你注销它,这些方法的一个。它不会
observe
任何值,也不会给出任何memory leak
或者你也可以这样做
# 2 楼答案
在博客文章中,它指出:
因此,当}
Activity
关闭时,应该取消注册-这应该在onPause
方法中完成^无论何时你离开你的Activity
,总是会调用{检查
Activities
:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle的生命周期# 3 楼答案
假设您有一个应用程序,它使用
FriendListActivity
创建了一个朋友列表屏幕。现在要创建此活动的UI,请从DB读取数据并创建UI现在,假设您还有一个在后台运行的服务,该服务使用web服务将此数据库与远程数据库同步
现在,每当服务更新数据库中的好友列表时,您也希望相应地更新您的UI。因此,为了实现这一点,您需要在为好友
URI
启动Activity
时在FriendListActivity
中注册内容观察者(假设您知道URI
的概念),这样每当数据库中的好友列表发生变化时,您也会更新FriendListActivity
中的好友列表。现在,如果用户退出了您的活动或关闭了应用程序,则您无需更新UI(因此无需获取DB更改的事件),因此您可以注销content observer现在,用户下次来到这个屏幕时,您将再次获取最新数据并向DB注册内容更改
因此,内容观察者通常是活动和数据库(或特定URI)之间的关系。因此,您可以在启动
Activity
时注册它,并在活动退出视图时取消注册它希望这有助于
# 4 楼答案
请看一下activity lifecycle:
onCreate
中注册了一个观察者,那么您将在onDestroy
中取消注册onStart
中注册了一个观察者,那么您将在onStop
中取消注册onResume
中注册了一个观察者,那么您将在onPause
中取消注册由于同一时间只能显示一个活动,我建议使用最后一个选项