四大组件(4) - ContentProvider

给其它应用分享本应用数据,常见使用场景:通讯录 短信等

一、使用步骤

1.提供数据App - 定义ContentProvider

继承ContentProvider 复写相关初始化和查询方法

同时在Manifest中声明

<provider

android:name=“xxx”

android:authorities=“testProvider” //访问路径名称

android:enabled=”true“

android:exported=“true”/>

 

2.获取数据app 使用ContentResolver获取数据

Uri uri = Uri.parse(“content://xxx”);

ContentResolver contentResolver = getContentResolver();

Curor cursor = contentResolver.query(uri,null,”query_where”,null,null);

 

二、原理

匿名共享内存(ASM) - binder机制

假设A应用访问B应用数据

1.A发送消息给AMS,想要访问B中的CP。

2.AMS检查发现,B中的CP没启动过,为此新开一个进程,启动B,然后获取到B启动的CP,把CP的代理对象返回给A。

3.A拿到CP的代理对象,也就是IContentProvider,就调用它的增删改查4个方法了,接下来就是使用ASM来传输数据或者修改数据了

 

参考:https://www.jianshu.com/p/c2ac0a54cdaa

 

三、扩展

Binder机制

https://www.jianshu.com/p/47731149c93c

 

AIDI使用

https://www.jianshu.com/p/29999c1a93cd

https://www.jianshu.com/p/23612b2cce30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值