关于android开发的一些基础知识

(一)关于 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的子集

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值