HarmonyOS数据库篇之四——本地DataAbility 原创
DataAbility主要功能是对外共享数据,可以共享给本地第三方应用,也可以跨设备共享。共享数据的类型可以是数据库这种逻辑比较复杂的数据,也可以是文件类型的数据。
本篇内容介绍通过ORM对象关系映射数据库存储数据,并通过DataAbility共享数据。
首先介绍什么是DataAbility,以及DataAbility使用时的步骤及注意事项;其次通过简单的小案例实现用ORM对象关系映射方式实现DataAbility。
##案例:使用ORM数据库存储单词数据,使用Data提供数据访问接口
### 1. 创建数据库与数据表实体类
1)修改entry模块的build.gradle文件,添加注解支持
2)数据表实体类(getter、setter方法略)
3)数据库实体类
### 2. 创建DataAbility
创建DataAbility
### 3. 注册DataAbility(config.json)
### 4. 访问Data
1) 在config.json中申请权限
2)在Slice中编辑测试代码
### 5. (可选)监听数据改变
1)在DataAbility中,当有数据改变时(增、删、改)时,通知访问者数据有更新
//声明Uri常量
private final Uri MY_URI =Uri.parse("dataability://com.example.lww.ch9dataabilitytest.WordDataAbility");
//通知数据更新
DataAbilityHelper.creator(this).notifyChange(uri);
或
DataAbilityHelper.creator(this, uri).notifyChange(uri);
**注意:**
**1. SDK6版本需使用creator()方法,该方法deprecated了,在SDK7版本中使用create()方法。**
**2. 不可以使用如下操作:**
**dataAbilityHelper.notifyChange(MY_URI);**
2)在调用Data接口的访问者中(如:当前应用中)自定义数据改变观察者
3)在调用Data接口的访问者中(如:当前应用的Slice中)注册数据改变观察者
数据改变观察者总结:
(1)Preferences中:
(2)RDB关系数据库
(3)ORM对象关系映射数据库
或者
附:
文件类型数据的共享需要开发者在Data中重写FileDescriptor openFile(Uri uri, String mode)方法来操作文件:uri为客户端传入的请求目标路径;mode为开发者对文件的操作选项,可选方式包含“r”(读), “w”(写), “rw”(读写)等。
开发者可通过MessageParcel静态方法dupFileDescriptor()复制待操作文件流的文件描述符,并将其返回,供远端应用访问文件。