Android应用程序组件Content Provider的启动过程源代码分析(1)
- public class ArticlesAdapter {
- ......
- private ContentResolver resolver = null;
- public ArticlesAdapter(Context context) {
- resolver = context.getContentResolver();
- }
- ......
- public int getArticleCount() {
- int count = 0;
- try {
- IContentProvider provider = resolver.acquireProvider(Articles.CONTENT_URI);
- Bundle bundle = provider.call(Articles.METHOD_GET_ITEM_COUNT, null, null);
- count = bundle.getInt(Articles.KEY_ITEM_COUNT, 0);
- } catch(RemoteException e) {
- e.printStackTrace();
- }
- return count;
- }
- ......
- }
- public abstract class ContentResolver {
- ......
- public final IContentProvider acquireProvider(Uri uri) {
- if (!SCHEME_CONTENT.equals(uri.getScheme())) {
- return null;
- }
- String auth = uri.getAuthority();
- if (auth != null) {
- return acquireProvider(mContext, uri.getAuthority());
- }
- return null;
- }
- ......
- }
- class ContextImpl extends Context {
- ......
- private ApplicationContentResolver mContentResolver;
- ......
- final void init(LoadedApk packageInfo,
- IBinder activityToken, ActivityThread mainThread,
- Resources container) {
- ......
- mContentResolver = new ApplicationContentResolver(this, mainThread);
- ......
- }
- ......
- @Override
- public ContentResolver getContentResolver() {
- return mContentResolver;
- }
- ......
- }
- class ContextImpl extends Context {
- ......
- private static final class ApplicationContentResolver extends ContentResolver {
- ......
- @Override
- protected IContentProvider acquireProvider(Context context, String name) {
- return mMainThread.acquireProvider(context, name);
- }
- ......
- private final ActivityThread mMainThread;
- }
- ......
- }
- public final class ActivityThread {
- ......
- public final IContentProvider acquireProvider(Context c, String name) {
- IContentProvider provider = getProvider(c, name);
- if(provider == null)
- return null;
- ......
- return provider;
- }
- ......
- }
Android应用程序组件Content Provider的启动过程源代码分析(1)相关推荐
- Android应用程序组件Content Provider的启动过程源代码分析(6)
Step 17. ActivityThread.installProvider 这个函数定义在frameworks/base/core/java/android/app/Act ...
- Android应用程序组件Content Provider的共享数据更新通知机制分析
在Android系统中,应用程序组件Content Provider为不同的应用程序实现数据共享提供了基础设施,它主要通过Binder进程间通信机制和匿名共享内存机制来实现的.关于数据共享的另一个 话 ...
- Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(1)
在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过Content Provider组件来实现.那么,Content Provide ...
- Android应用程序组件Content Provider的共享数据更新通知机制分析(3)
3. 数据更新通知的发送过程 在前面这篇文章Android应用程序组件Content Provider应用实例介绍的应用程序Acticle中,当调用ArticlesAda ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析(3)
Step 13. ActivityStack.startActivityLocked 这个函数定义在frameworks/base/services/java/com/android/server/ ...
- Android应用程序组件Content Provider简要介绍和学习计划
在Android系统中,Content Provider作为应用程序四大组件之一,它起到在应用程序之间共享数据的作用,同时,它还是标准的数据访问接口.前面的一系列文章已经分析过Android应用程序的 ...
- Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(2)
Step 7. ContentProviderProxy.query 这个函数定义在frameworks/base/core/java/android/content/Conten ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析(2)
Step 10. ActivityManagerService.systemReady 这个函数是在上面的Step 6中的ServerThread.run函数在将系统中的一系列服务都初始化完毕之后才 ...
最新文章
- DeepMind提图像生成的递归神经网络DRAW,158行Python代码复现
- 最大流 ---- 最大不相交路径数 ---- P2766 最长不下降子序列问题(网络流24题)
- python2升级_把Python2.6升级到Python2.7(适用于把Python2升级到Python3)
- 人的一生,有三件事情不能等
- 已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
- 中职计算机说课稿三篇,2020精选中职计算机说课稿3篇(15页)-原创力文档
- mysql group函数_MySQL函数:group_concat()函数
- tabel表格制作及操作
- Python使用itchat获取微信好友
- 【Flink】Flink ES6写入报错 IncompatibleClassChangeError: Implementing class
- vbs 获取计算机主机名,vbs 获取主机名
- Delphi vs VC++
- java高级教程pdf_《Java高级编程实用教程》PDF 下载_IT教程网
- c语言从入门到精通的几个阶段
- 高中3年,3500个词汇带音标,归成“图表”
- 一个人的隔空喊话(于2012-08-12nbsp;0…
- 基于压缩传感的脉冲GPR成像技术研究(硕士学位论文初稿20111230)
- JavaScript基础Date函数
- SpringData示例
- jQuery_02 快速入门 $作用和方法