HarmonyOS基础技术赋能之分布式数据服务功能 原创 精华
引言
分布式数据服务(Distributed Data Service,DDS) 为应用程序提供不同设备间数据库数据分布式的能力。通过调用分布式数据接口,应用程序将数据保存到分布式数据库中。通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同应用的数据进行隔离,保证不同应用之间的数据不能通过分布式数据服务互相访问。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户提供在多种终端设备上最终一致的数据访问体验。
功能介绍
此次通过HarmonyOS的分布式数据服务能力,一方面可以实现自身应用界面的数据实时更新;另一方面也可以实现不同设备之间的数据实时更新。前提是在不同设备之间,要实现分布式数据服务的同步能力,需要同一个华为账号登录、并一个应用包名、同一个网络之间进行,也可以两个设备同时开启蓝牙。
开发指南
1. 在config.json中添加permisssion权限。
2. 在MainAbility中添加权限
3. 根据配置构造分布式数据库管理类实例KvManager以及创建分布式数据库对象SingleKvStore。
4. 将数据写入单版本分布式数据库。
5.订阅分布式数据变化。客户端需要实现KvStoreObserver接口,监听数据变化。
6.获取分布式数据库数据
7. 解除订阅。一般在页面销毁时调用,也就是MainAbilitySlice的onStop()中调用
8. 同步数据到其他设备。获取已连接的设备列表,选择同步方式进行数据同步
项目中采用在后台service中开启定时任务,实时保存数据到分布式数据库,然后在主界面,监听数据变化,实时更新数据。
结果演示
1.刚开始安装完成后效果:
2.每隔3秒,界面数据都会发生变化:
附上源码:
1.MainAbilitySlice
2.ServiceAbility
3.DBUtils
4. MainAbility
5. MyApplication
6. config.json 文件
7.xml布局文件
更多原创内容请关注:软通动力HarmonyOS学院
非常详细的分布式分享
张老师写的真详细
分享内容很详细,学习了~
写的真详细,代码竟然直接贴出来
张老师加油
config.json文件里的 "bundleName": "com.isoftstone.healthdata", 应该为 “com.isoftstone.kvstoreapp”,否则无法初始化service,看不到数据更新效果。请注意!!!
private void initService() {
//启动ServiceAbility
serviceIntent = new Intent();
Operation operation = new Intent.OperationBuilder()
.withDeviceId("")
.withBundleName("com.isoftstone.kvstoreapp") .withAbilityName("com.isoftstone.kvstoreapp.ServiceAbility")
.build();
serviceIntent.setOperation(operation);
startAbility(serviceIntent);
}
红色部分字体要与包名bundleName保持一致!!!
感谢支持