- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在发起一个请求的过程中, Android首先根据URI确定处理这个查询的ContentProvider, 然后初始化ContentProvider所有需要的资源,这个初始化的工作是Android系统完成的,无需程序开发人员参与 数据分享 ContentResolver ContentProvider1 ContentProvider2 ContentProviderN …… 数据集1 数据集N …… 记录1 …… 记录N URI ContentProvider完全屏蔽了数据提供组件的数据存储方法 在使用者看来,数据提供者通过ContentProvider提供了一组标准的数据操作接口,却无法得知数据提供者的数据存储方式 数据提供者可以使用SQLite数据库存储数据,也可以通过文件系统或SharedPreferences存储数据,甚至是使用网络存储的方法,这些内容对数据使用者都是不可见 同时也正是因为屏蔽数据的存储方法,很大程度上简化了ContentProvider的使用难度,使用者只要调用ContentResolver提供的接口函数,就可完成所有的数据操作 数据分享 URI:通用资源标志符(Uniform Resource Identifier),用来定位任何远程或本地的可用资源 ContentProvider使用的URI语法结构如下: content://authority/data_path/id 数据分享 通用前缀,表明该URI用于contentProvider定位资源 哪个ContentProvider 哪个数据集 哪个数据记录 创建数据提供者 程序开发人员通过继承ContentProvider类可以创建一个新的数据提供者,过程可以分为三步: 数据分享 继承ContentProvider,并重载其中六个函数 声明CONTENT_URI,实现UriMatcher 注册ContentProvider 初始化 数据操作: 添加、删除、查询、更新 获取URI的MIME 数据分享 注册ContentProvider 在完成ContentProvider类的代码实现后,需要在AndroidManifest.xml文件中进行注册 注册ContentProvider使用provider标签,示例代码如下 在上面的代码中,注册了一个授权者名称为edu.hrbeu.peopleprovider的ContentProvider,其实现类是PeopleProvider application android:icon=@drawable/icon android:label=@string/app_name provider android:name = .PeopleProvider android:authorities = edu.hrbeu.peopleprovider/ /application 数据分享 使用数据提供者 使用ContentProvider是通过Android组件都具有的ContentResolver对象,通过URI进行数据操作 程序开发人员只需要知道URI和数据集的数据格式,则可以进行数据操作,解决不同应用程序之间的数据共享问题 每个Android组件都具有一个ContentResolver对象,获取ContentResolver对象的方法是调用getContentResolver()函数 ContentResolver resolver = getContentResolver(); 第10章 Android NDK开发 NDK概念 Android NDK (Android Native Development Kit)包含一系列的开发工具,允许程序开发人员在Android应用程序中嵌入C/C++语言编写的非托管代码 特点 描述 优势 解决了核心模块使用托管语言开发执行效率低下的问题 允许程序开发人员直接使用C/C++源代码,极大的提高了Android应用程序开发的灵活性 不足 增加程序的使用非托管代码复杂性,增加了程序调试的难度 CPU运算量大和内存消耗较少的部分运行效率最高, (例如信号处理或物理仿真)因此并不是所有的核心部分都适合使用C/C++语言编写 NDK开发 加载本地模块 本地函数声明与调用 System.loadLibrary(“ ); public native long add(long x, long y); Android.mk JNI接口 C/C++源代码 动态库libxxx*.so 静态库libxxx*.a JAVA层 C/C++层 NDK开发 建立Android.mk文件 内容 意义 LOCAL_PATH := $(call my-dir)
文档评论(0)