OpenHarmony标准设备应用开发(三)——分布式数据管理

OpenHarmony(鸿蒙南向开发)——标准系统内核(Linux) 标准系统类设备是面向应用处理器的设备,支持的设备最小内存为128MiB。OpenHarmony选择Linux内核作为基础内核,可以对不同资源受限的设备产品配置出适合的OS内核,为上层提供基础的操作系统能力。 阅读详情

(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点)

邢碌
 

上一章,我们通过分布式音乐播放器、分布式炸弹、分布式购物车,带大家讲解了 OpenAtom OpenHarmony(以下简称“OpenHarmony”)中,相关控件在布局中如何使用,以及在 OpenHarmony 中如何实现音乐播放,显示动画,转场动画(页面间转场)等功能。

本章是 OpenHarmony 标准设备应用开发的第三篇文章,将会在前面两章的基础上给大家讲解分布式数据管理在多台设备间,当数据出现变动时,通过订阅的方式,实现多台设备间的数据同步更新。为了更好的理解,我们使用 eTS 开发了一款如下动图所示的井字过三关游戏来讲解分布式数据管理在应用中的使用。

Demo 简介:Demo 基于 OpenHarmony 系统使用 eTS 语言进行编写,本 Demo 主要通过设备认证,分布式拉起,分布式数据管理等功能来实现。

项目创建以及页面布局等,这里就不再赘述,本章重点讲解自定义弹窗以及分布式数据管理。

一、自定义弹窗


通过对自定义弹窗的讲解,希望能让大家学到如何在项目中实现自己的自定义弹窗。

1.1 通过 @CustomDialog 装饰器来创建自定义弹窗,使用方式可参考 自定义弹窗:

官方参考链接:zh-cn/application-dev/reference/arkui-ts/ts-methods-custom-dialog-box.md · OpenHarmony/docs - Gitee.com


1.2 布局从上到下由 Text、List、Button 组成,List 中的子元素由 Text 和 Radio 组成,以下代码的省略号表示非 UI 相关的逻辑代码,具体实现参考源代码:

@CustomDialog
struct gameStart {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
        //顶部标题
        Text('发现以下在线设备').fontColor(Color.Black).fontSize(30)
      }.width('100%').height('20%')

      Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Start }) {
       //使用List容器动态加载在线设备
       List() {
          ForEach(this.deviceName, (item) => {
            ListItem() {
              Row() {
                //Text组件显示设备名
                Text(item.deviceName).width('80%').fontSize(30).fontColor(Color.Black)
                //Radio组件显示单选框
                Radio({ value: '' }).checked(this.check[item.id]).onChange(() => {
                  //这里保证List里面点击了多个Radio组件时,只有当前点击的为选中状态
                  for (let i = 0; i < this.check.length; i++) {
                    this.check[i] = false
                  }
                  this.check[item.id] = true
                })
              }
            }
          }, item => item.id)
        }
        .height('80%')

        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
          Button('确定').width(200).height(50).fontSize(30).onClick(() => {
            //......
            this.controller.close()
          })
        }.height('30%')

      }.width('100%').height('80%')
    }.height('100%').width('100%')
  }
}


通过上述方式,完成我们的自定义弹窗,大家也可以在自己的项目中尝试完成自己的自定义弹窗。

二、分布式数据管理


分布式数据管理,可以在多台设备间,当数据出现变动时,通过订阅的方式,实现多台设备间的数据同步更新。当我们需要在多台设备间实现数据的同步更新,就可以使用分布式数据管理来实现。井字过三关游戏,通过分布式数据管理,实现多台设备间游戏界面的同步更新,实现多台设备同玩一个游戏的功能。

官网参考链接:zh-cn/application-dev/reference/apis/js-apis-distributed-data.md · OpenHarmony/docs - Gitee.com


数据分布式运作示意图,如下所示。

实现步骤:

分布式数据管理依赖 @ohos.data.distributedData 模块实现,详细参考项目源码中的 RemoteDataManager.ets 实现步骤。

2.1 导入该模块

import factory from '@ohos.data.distributedData';

2.2 创建 KVManager 实例,用于管理数据库对象

registerDataListCallback(callback) {
    let that = this
    if (this.kvManager == null) {
      try {
        const config = {
          userInfo: {
            userId: '0',
            userType: 0
          },
          bundleName: 'com.example.tictactoegame'
        }
        factory.createKVManager(config).then((manager) => {
          that.kvManager = manager
          that.registerDataListCallback_(callback)
        }).catch((err) => {
        })
      } catch (e) {
      }
    } else {
      this.registerDataListCallback_(callback)
    }
  }


备注:bundleName 改成对应内容

2.3 创建并获取 KVStore 数据库

registerDataListCallback_(callback) {
    let that = this
    if (that.kvManager == null) {
      callback()
      return
    }
    if (that.kvStore == null) {
      try {
        let options =
          {
            createIfMissing: true,
            encrypt: false,
            backup: false,
            autoSync: true,
            kvStoreType: 1,
            securityLevel: 3
          }
        this.kvManager.getKVStore(this.STORE_ID, options).then((store) => {
          that.kvStore = store
          that._registerDataListCallback_(callback)
        }).catch((err) => {
        })
      } catch (e) {
      }
    } else {
      this._registerDataListCallback_(callback)
    }
  }


备注:STORE_ID 改成对应内容

2.4 订阅指定类型的数据变更通知

_registerDataListCallback_(callback) {
    let that = this
    if (that.kvManager == null) {
      callback()
      return
    }
    this.kvStore.on('dataChange', 1, function(data) {
      if (data) {
         that.arr = data.updateEntries
        callback()
      }
    })
  }


备注:kvStore.on 方法中的 1 对应订阅的类型,具体详情看上面官网参考中的详细描述。

2.5 添加指定类型键值对到数据库

dataChange(key, value) {
    let that = this
      try {
        that.kvStore.put(JSON.stringify(key), JSON.stringify(value)).then((data) => {
        }).catch((err) => {
          prompt.showToast({message:'put err:'+JSON.stringify(value)})
        })

      } catch (e) {
      }
  }


项目下载链接:OpenHarmony-SIG/knowledge_demo_temp - Gitee.com


相关问题说明:

分布式数据管理数据传输过程中,如果数据中包含中文,会出现乱码,所以数据存储中,尽量不要使用中文。

通过此次三个章节的讲解,我们知道了如何从零到有在标准设备上运行一个最简单的 OpenHarmony 程序,并在此基础上,知道了如何在 OpenHarmony 中做到音乐播放,显示动画,转场动画等相关进阶技能,以及如何通过分布式数据管理在多台设备之间实现数据的同步更新。

在后续 OpenHarmony 最新版本中,我们会有更多新的特性,更多的开发板,以及更多的样例带给大家,敬请期待。

OpenHarmony(鸿蒙南向开发)——子系统开发内核 OpenHarmony的Linux内核基于开源Linux内核LTS分支演进,在此基线基础上,回合CVE补丁及OpenHarmony特性,作为OpenHarmony Common Kernel基线。针对不同的芯片,各厂商合入对应的板级驱动补丁,完成对OpenHarmony的基线适配。Linux社区LTS 4.19.y分支信息请查看kernel官网。Linux社区LTS 5.10.y分支信息请查看kernel官网。 阅读详情

相关推荐

OpenHarmony标准设备应用开发——分布式数据管理

通过对自定义弹窗的讲解,希望能让大家学到如何在项目中实现自己的自定义弹窗。

xianglizaibie的博客 834

OpenHarmony与HarmonyOS联系与区别

OpenHammony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的,开源项目么,开放原子开源基金会由华为、阿里、腾讯、百度、浪潮、招商银行、360等十家互联网企业共同发起组建。目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建-个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。

qq_40207692的博客 1753

OpenHarmony实战开发-分布式数据管理

本示例展示了在eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。

2401_82546228的博客 1459

鸿蒙HarmonyOS和OpenHarmony傻傻分不清?

OpenHarmony的这个“发动机”是开源的,这意味着其他厂商可以自由地拿去,根据自己的需求安装到自己的“车身”上,可能是大型SUV,也可能是小型经济车,还可以对“发动机”进行调校,以适应不同的性能需求。想象一下,HarmonyOS就像是华为生产的一辆完整的汽车,这辆汽车设计精良,内饰豪华,功能齐全,有自家的导航系统,智能联网功能等,而且它是专门为特定消费者群体设计的,比如销售给华为手机用户,或者与特定的硬件和服务搭配使用。我们可以把HarmonyOS和OpenHarmony的关系比作汽车和发动机。

weixin_42082058的博客 1498

鸿蒙OpenHarmony【ArkData简介】ArkData方舟数据管理

ArkData (方舟数据管理)为开发者提供数据存储、数据管理和数据同步能力,比如联系人应用数据可以保存到数据库中,提供数据库的安全、可靠以及共享访问等管理机制,也支持与手表同步联系人信息。

adsjgfjha123123的博客 1228

OpenHarmony:华为鸿蒙分布式操作系统(华为OpenHarmony)开发技术交流,鸿蒙技术资料,手册,指南,共建国产操作系统万物互联新生态

鸿蒙OS分布式操作系统OpenHarmony 华为鸿蒙分布式操作系统(Huawei OpenHarmony)开发技术交流,鸿蒙技术资料,手册,指南,共建万物互联新生态。 ================鸿蒙系统简介================= 鸿蒙OS分布式操作系统简介鸿蒙系统(HarmonyOS) ,是第一款基于微内核的全场景分布式操作系统,是华为自主研发的操作系统。2019年8月9日,鸿蒙系统在华为开发者大会<HDC>上正式发布,华为会率先部署在智慧屏,车载终端,穿戴式智能终端上,未来会有越来越多的智能设备使用开源的鸿蒙OS 。2020年9月10日,在华为开发者大会202

【鸿蒙南向开发】OpenHarmony标准设备应用开发(三)——分布式数据管理

通过对自定义弹窗的讲解,希望能让大家学到如何在项目中实现自己的自定义弹窗。

adaedwa187545的博客 920

stata 代码实现熵值法计算 含常见问题解答

2.标准化①正向指标②负向指标。

m0_74825360的博客 1217

OpenHarmony标准设备应用开发(一)——HelloWorld

(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 邢碌 本文是 OpenAtom OpenHarmony(以下简称“OpenHarmony”)标准设备应用开发的第一篇文章。这一篇我们主要聚焦于如何在标准设备上运行一个最简单的 OpenHarmony 程序。 本文主要内容包括三个方面:1. 应用编译环境准备;2. Hello Openharmony 页面编写;3. 安装应用到标准设备上面。下面就让我们从零开始学习 OpenHarmony 标准设备应用开发。.

OpenHarmony_dev的博客 4824

Open3D:Win10 + VS2017配置Open3D(C++、python)

一、下载源码 地址:https://github.com/intel-isl/Open3D 1.1 克隆源码【笔者的源码路径为D:\Open3D\Open3D】 1.2 切换版本【笔者的版本为0.8.0】 1.3 更新子模块【用于获取第三方库!很重要!】 二、CMake编译 2.1 设置路径 【source code: D:\Open3D\Open3D;build binaries: D:\Open3D】 【笔者设置CMAKE/CMAKE_INSTALL_PREFIX的路径为D:/Open.

累了就要打游戏 1万+

Android BluetoothSocket

BluetoothSocket是Android中用于在蓝牙设备之间进行数据传输的一种Socket。它提供了一种类似于TCP/IP协议的数据传输方式,可以在两个设备之间建立一个虚拟的通信管道,使得两个设备之间可以进行数据的传输和接收。BluetoothSocket可以用于客户端和服务端之间的通信,通过BluetoothSocket可以实现数据的双向传输。

liuning1985622的博客 1477

OpenHarmony分布式数据管理子系统

子系统介绍分布式数据管理子系统支持单设备的各种结构化数据的持久化,以及跨设备之间数据的同步、共享功能。开发者通过分布式数据管理子系统,能够方便地完成应用程序数据在不同终端设备间的无缝衔接,满足用户跨设备使用数据的一致性体验。子系统架构图 1子系统架构图。

__Benco的博客 1403

FISCO BCOS平台的用户权限控制与分类管理

在区块链技术日益广泛应用的今天,如何管理与控制不同用户的权限,确保系统的安全性与高效性,成为了区块链平台不可忽视的一部分。FISCO BCOS作为一款高效的联盟链平台,通过细粒度的权限控制机制,提供了对不同用户权限的有效管理。本文将深入探讨FISCO BCOS如何实现用户的权限控制,并对不同用户进行分类与权限管理。FISCO BCOS平台通过精密的权限控制机制,不仅提供了对用户表和系统表的细粒度权限管理,还通过工具与接口为开发者和管理员提供了便捷的权限配置与查询功能。

2201_75798391的博客 1060

【OpenHarmony开发案例4】分布式购物车应用开发

分布式购物车demo 模拟的是我们购物时参加满减活动,进行拼单的场景;实现两人拼单时,其他一人添加商品到购物车,另外一人购物车列表能同步更新,且在购物车列表页面结算时,某一人结算对方也能实时知道结算金额和优惠金额。整个操作效果分为3个小动画,拉起对方用户添加商品到购物车列表购物车列表勾选demo效果(HH-SCDAYU200)分布式购物车demo 模拟的是我们购物时参加满减活动,进行拼单的场景;

xzs51job的专栏 1039

遥感新手别纠结!实测ENVI 5.3、5.6、6.0三个免费版,教你混搭安装避坑

本文为遥感新手提供ENVI 5.3、5.6、6.0三个免费版的实测对比与混搭安装指南,帮助用户构建零成本高效工作流。详细解析各版本功能差异、共存安装技巧及常见问题解决方案,特别适合课程作业、毕业论文分析和遥感入门练习。

weixin_30819085的博客 472

ASTRA Toolbox学习笔记-Python

ASTRA Toolbox 是一个用于处理 X 射线相干散射和 X 射线传输成像的开源算法工具箱。本文档概述了该工具箱的基本概念。

hou9021的博客 8261

openharmony之分布式蓝牙实现多功能场景设备协同实战

在开发之前,必须理解OpenHarmony实现分布式体脂仪所依赖的技术基石,特别是其异构系统架构。OpenHarmony并非单一系统,而是根据设备资源分为不同类型,它们在分布式场景中扮演不同角色。:扫描BLE设备需要获取位置权限,这是系统安全策略的要求。进行分布式设备发现和认证则需要。文件中声明应用所需的权限。BLE扫描和分布式数据同步权限是必不可少的。这是实现分布式体验的第一步,让手机能够发现并信任体脂仪设备。BLE是体脂仪与手机通信的核心。

m0_67505153的博客 971

GEE 案例:基于陆地卫星8号(大气层顶反射率数据)LANDSAT/LC08/C02/T1_TOA的生态遥感指数RSEI计算、可视化和下载

摘要:基于GEE的遥感生态指数(RSEI)计算方法 本文介绍了利用Google Earth Engine(GEE)平台计算遥感生态指数(RSEI)的全流程方法。主要内容包括:研究区域定义、Landsat8数据获取与去云预处理、关键生态指标计算(地表温度LST、植被指数NDVI、湿度指数WET和建筑指数NDBSI)、主成分分析(PCA)降维处理,以及结果可视化与数据导出。通过结合多源遥感指标并采用归一化处理,构建了综合反映区域生态环境质量的RSEI指数。该方法为生态环境监测提供了高效的技术方案,所有计算过程均

此星光明博客 436

OpenHarmony 核心技术特性解析:分布式能力的四大支柱

OpenHarmony 的分布式能力是其区别于传统操作系统的核心创新,通过分布式软总线、分布式数据管理、分布式任务调度和设备虚拟化四大技术,实现跨设备无缝协同。

汽车电子软件领域知识分享 1653

eNSP常见故障处理

eNSP无法启动设备一直停在#井号的问题的解决方案?

lvshiliang123的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Flutter 与 OpenHarmony 数据持久化协同方案:从 Shared Preferences 到分布式数据管理

本文提出了一种Flutter应用在OpenHarmony平台上的数据持久化协同方案。针对传统Flutter存储方案在OpenHarmony上的局限性(存储隔离性和分布式场景缺失),设计了"统一接口+原生代理"的分层架构。该方案通过MethodChannel桥接Flutter与OpenHarmony的存储系统,既保持了开发者熟悉的键值存储API,又能利用OpenHarmony特有的本地Preferences、分布式KV Store等能力。文章详细阐述了架构设计思路,并提供了完整的代码实现示

2502_93572233的博客 1257

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

鸿蒙南向(OpenHarmony)分布式音乐播放

本示例使用fileIo获取指定音频文件,并通过AudioPlayer完成了音乐的播放完成了基本的音乐播放、暂停、上一曲、下一曲功能;并使用DeviceManager完成了分布式设备列表的显示和分布式能力完成了音乐播放状态的跨设备迁移。

adaedwa187545的博客 1152

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【OpenHarmony开发案例7】分布式数据接口应用开发

本章是 OpenHarmony 标准设备应用开发的第三篇文章,将会在前面两章的基础上给大家讲解分布式数据管理在多台设备间,当数据出现变动时,通过订阅的方式,实现多台设备间的数据同步更新。通过此次三个章节的讲解,我们知道了如何从零到有在标准设备上运行一个最简单的 OpenHarmony 程序,并在此基础上,知道了如何在 OpenHarmony 中做到音乐播放,显示动画,转场动画等相关进阶技能,以及如何通过分布式数据管理在多台设备之间实现数据的同步更新。Text(&

xzs51job的专栏 692
上一篇: OpenHarmony标准设备应用开发(二)——布局、动画与音乐
下一篇: 【分享汇总】25个主题分享,360°领略OpenHarmony最新技术版图
OpenHarmony开发者
博客等级 码龄5年 626粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值