赞
踩
(一)关于 Binder
摘自: http://www.cnblogs.com/Jax/p/6864103.html 和 https://blog.csdn.net/cjh94520/article/details/71374872
1. Binder是跨进程通讯(IPC)的媒介。
2. Binder分为Client和Server两个进程,但这两部分是相对的,发消息就是Client,收消息就是Server。
3.
如图,Binder包含四大模块:
客户端:获取服务端在Binder驱动中对应的引用,然后调用transact方法向服务器发消息
服务端:即Binder实现类所在的进程,该对象一旦创建,内部会自动启动一个隐藏线程,用来接收客户端消息,然后执行Binder对象的onTransact()函数。
Binder驱动:饭服务端Binder对象被创建时,会在Binder驱动中创建一个mRemote对象。
ServiceManager:相当于DNS,像dns会帮我们找到对应的IP地址一样,在Binder服务端创建了Binder后,hui会被注册到ServiceManager,同样的,当客户端需要该Binder时,也会去ServiceManager中寻找。
四大模块的基本运行路程为:
3.1 服务端创建Binder对象,同时也开启了接受客户端消息的线程,同时,将自身Binder注册到serviceManager中,在Binder驱动创建mRemote对象。
3.2 客户端和服务端通讯,通过ServiceManager查找服务器的Binder,然后Binder驱动将对应的mRemote对象返回。
大致如下:
(二)关于 ContentProvider
1. 作为Android四大组件之一:ContentProvider 是 Android 应用程序间数据交互的标准API,ContentProvider 以 Uri 的形式对其他应用程序提供数据,其他应用程序使用 ContentResolve 根据 Uri 访问指定的数据。
2. 上面提到 ContentProvider、Uri、ContentResolve。
2.1 Uri:统一资源标识符,是“Uniform Resource Identifier”的简写,是一个用于标识某一互联网资源的字符串。通常由主机名+标识符+相对URI三部分构成。
在介绍Android的Uri之前我们先看一个网站的Uri如下:
https://www.oracle.com/index.html
其规则分为三部分如下:
https:协议部分,通过https协议来访问该网站,这个是固定的;
www.oracle.com:域名部分,要访问指定网站,这个也是固定的;
index.html:网络资源部分,访问者可以访问不同的资源,这个是动态的;
而ContentProvide的Uri与此类似,例如上述注册的ContentProvide,要访问该应用的数据的Uri可以是这样的:
content://com.lzb.provide.myContentProvide/students
其规则分为三部分如下:
content://:协议部分,表示ContentProvider使用的协议,这个是固定的;
com.lzb.provide.myContentProvide:URI 的标识,也是属性authorities定义的部分,系统就是通过这个部分找到要操作那个ContentProvide,
这个也是固定的。为了保证URI标识的唯一性,它一般是一个完整的、小写的类名(包.小写的类名);
students:资源部分(资源所在的路径),访问者可以访问不同的资源,这个是动态的;如果想要访问具体那行数据,可以在后面加上该行的ID,例如上述要该路径下的第1条记录,那么Uri可以写为
content://com.lzb.provide.myContentProvide/students/1
2.2 ContentProvider:使用ContentProvider要扩展android提供的ContentProvider类。并且要在清单配置文件中注册。
扩展时要实现基类的四个方法:query、insert、delete、update,即增删改查。
2.3 ContentResolver:通过getContentResolver()来获取ContentResolver的对象,获取对象后可以根据Uri来实现对对应数据的操作:增删改查。
3. ContentProvider的本质是:把数据存储到SQLite数据库中,也就是对SQLite数据库中数据操作的一层封装。
4. 关于:
URI :Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
其中,URL,URN是URI的子集。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。