一、功能
应用之间共享数据
常见使用场景:通讯录 短信等
二、使用步骤
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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。