Android内容提供者(ContentProvider)浅析(三)
来源:互联网 发布:移动网络电视无中央5台 编辑:程序博客网 时间:2024/05/17 04:09
这一篇要说两个问题,一个是ContentProvider数据监听机制,另一个就是ContentProviderConnection这个东东。
ContentProvider中的监听机制是一个观察者模式的实现。从使用方式就可以看出来
getContentResolver().registerContentObserver(CONTENT_URI, true, mContentObserver);
getContentResolver().notifyChange(changed_content_uri, null);
public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer, int userHandle) { try { getContentService().registerContentObserver(uri, notifyForDescendents, observer.getContentObserver(), userHandle); } catch (RemoteException e) { } }
public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork, int userHandle) { try { getContentService().notifyChange( uri, observer == null ? null : observer.getContentObserver(), observer != null && observer.deliverSelfNotifications(), syncToNetwork, userHandle); } catch (RemoteException e) { } }
从这两个方法上来看,并没有直接将Observer注册在ContentProvider中,它们之间还有一个中介,而这个就是ContentService。顾名思义,这是一个服务并且呢是一个系统级的服务。这倒是符合android设计的一贯原则,将管理的工作都交给系统服务来做,关于这个类的详细介绍可以参见此博文:http://blog.csdn.net/banketree/article/details/9188179
还有一个请注意,这里的内容监听操作涉及到客户端、provider和contentservice三个进程,所以理所当然的也有跨进程哦,这里的跨进程操作主要是发生在ContentObserver这里,是它里面的Transport来实现的。
然后说一下ContentProviderConnection,其实这个玩意我也没有弄明白,字面上意思看就是一个共享数据连接,但是看起实现也没有任何起到连接通道以及传输的意思,只是单纯的客户端进程记录与当前内容提供者记录的容器只是本身继承于Binder,并且看其使用也多数是在ActivityManagerService中注册和移除Provider的时候。可能还真是一个可以在进程间传递并且保持相互引用关系的东东,这个有谁能全面分析一下的可以留言告诉在下,不甚感激。。。 0 0
- Android内容提供者(ContentProvider)浅析(三)
- Android内容提供者(ContentProvider)浅析(一)
- Android内容提供者(ContentProvider)浅析(二)
- ContentProvider(内容提供者)
- ContentProvider(内容提供者)
- (android)内容提供者contentprovider(-)
- Android内容提供者 --ContentProvider(待写)
- Android组件之ContentProvider(内容提供者)
- android之ContentProvider(内容提供者)
- Android 内容提供者(三)
- 内容提供者(ContentProvider)复习
- Android ContentProvider(内容提供者 )+ContentResolver(内容访问者)
- Android ContentProvider(内容提供者)
- android内容提供者ContentProvider
- Android--- ContentProvider(内容提供者)
- Android 内容提供者ContentProvider
- Android内容提供者ContentProvider
- android内容提供者contentProvider
- 电气控制系统中的各种接地分析 转
- 常见的个人博客系统有哪些?
- FineUI PK DWZ
- navicat for sqlite 下载免费
- Android 每日学习笔记
- Android内容提供者(ContentProvider)浅析(三)
- 解决Windows To Go常见的三大挑战
- 手写注册页面,并实现验证信息(AJAX,Jquery,正则表达式,密码强度验证)
- 【大话设计模式】—— 模板方法模式
- Java语言基础特性——第二部分
- jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
- C++中extern “C”含义深层探索
- Eclipse 变量点击高亮显示以及自定义高亮显示颜色
- WIN7下如何进入debug