衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過分布式數據管理實現多臺設備間的數據同步更新

電子發燒友開源社區 ? 來源:HarmonyOS官方合作社區 ? 作者:HarmonyOS官方合作社 ? 2022-02-25 11:47 ? 次閱讀

上一章,我們通過分布式音樂播放器、分布式炸彈、分布式購物車,帶大家講解了 OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)中,相關控件在布局中如何使用,以及在 OpenHarmony 中如何實現音樂播放,顯示動畫,轉場動畫(頁面間轉場)等功能。本章是 OpenHarmony 標準設備應用開發的第三篇文章,將會在前面兩章的基礎上給大家講解分布式數據管理在多臺設備間,當數據出現變動時,通過訂閱的方式,實現多臺設備間的數據同步更新。

為了更好的理解,我們使用 eTS 開發了一款如下動圖所示的井字過三關游戲來講解分布式數據管理在應用中的使用。

Demo 簡介:Demo 基于 OpenHarmony 系統使用 eTS 語言進行編寫,本 Demo 主要通過設備認證,分布式拉起,分布式數據管理等功能來實現。

項目創建以及頁面布局等,這里就不再贅述,本章重點講解自定義彈窗以及分布式數據管理。

自定義彈窗

通過對自定義彈窗的講解,希望能讓大家學到如何在項目中實現自己的自定義彈窗。

1.1 通過 @CustomDialog 裝飾器來創建自定義彈窗,使用方式可參考 自定義彈窗:

1.2 布局從上到下由 Text、List、Button 組成,List 中的子元素由 Text 和 Radio 組成,以下代碼的省略號表示非 UI 相關的邏輯代碼,具體實現參考源代碼:


	@CustomDialogstruct 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%') }}
	

通過上述方式,完成我們的自定義彈窗,大家也可以在自己的項目中嘗試完成自己的自定義彈窗。

分布式數據管理

分布式數據管理,可以在多臺設備間,當數據出現變動時,通過訂閱的方式,實現多臺設備間的數據同步更新。當我們需要在多臺設備間實現數據的同步更新,就可以使用分布式數據管理來實現。井字過三關游戲,通過分布式數據管理,實現多臺設備間游戲界面的同步更新,實現多臺設備同玩一個游戲的功能。

數據分布式運作示意圖,如下所示。

如何通過分布式數據管理實現多臺設備間的數據同步更新

實現步驟:分布式數據管理依賴 @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 程序,并在此基礎上,知道了如何在 OpenHarmony 中做到音樂播放,顯示動畫,轉場動畫等相關進階技能,以及如何通過分布式數據管理在多臺設備之間實現數據的同步更新。在后續 OpenHarmony 最新版本中,我們會有更多新的特性,更多的開發板,以及更多的樣例帶給大家,敬請期待。

原文標題:OpenHarmony標準設備應用開發(三)——分布式數據管理

文章出處:【微信公眾號:HarmonyOS官方合作社區】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7137

    瀏覽量

    89562
  • 設備
    +關注

    關注

    2

    文章

    4541

    瀏覽量

    70847
  • OpenHarmony
    +關注

    關注

    25

    文章

    3744

    瀏覽量

    16573

原文標題:OpenHarmony標準設備應用開發(三)——分布式數據管理

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發實例:【分布式數據管理

    eTS中分布式數據管理的使用,包括KVManager對象實例的創建和KVStore數據流轉的使用。
    的頭像 發表于 04-11 09:57 ?982次閱讀
    HarmonyOS開發實例:【<b class='flag-5'>分布式</b><b class='flag-5'>數據管理</b>】

    分布式軟件系統

    分布式程序設計語言及其編譯(解釋)系統、分布式文件系統和分布式數據庫系統等。 分布式操作系統負責管理
    發表于 07-22 14:53

    HarmonyOS分布式數據庫,為啥這么牛?

    基于應用掃碼認證的賬號無關的設備連接認證方式,應用可以通過掃碼的方式來完成設備的認證。 對于應用掃碼完成設備認證的結果,只能對同應用的沙
    發表于 11-19 15:38

    如何通過基于云的數據管理技術實現分布式設備的態勢感知?

    如何通過基于云的數據管理技術實現分布式設備的態勢感知?
    發表于 05-25 06:56

    HarmonyOS實戰—基于分布式能力,實現設備同步書寫互動

    1. 介紹分布式手寫板利用分布式數據庫和分布式設備啟動與連接實現。每臺設備在書寫的時候,連接的
    發表于 09-03 17:14

    HarmonyOS教程—基于分布式數據接口,實現多種設備上一致的數據訪問體驗

    分布式數據庫中。通過結合帳號、應用和數據庫三元組,分布式數據服務對屬于不同的應用的數據進行隔離
    發表于 09-26 11:40

    分布式軟總線實現近場設備統一的分布式通信管理能力如何?

    現實中多設備通信方式多種多樣(WIFI、藍牙等),不同的通信方式使用差異大,導致通信問題多;同時還面臨設備通信鏈路的融合共享和沖突無法處理等挑戰。那么
    發表于 03-16 11:03

    OpenHarmony標準設備應用開發筆記匯總

    應用開發的第三篇文章,將會在前面兩章的基礎上給大家講解分布式數據管理多臺設備,當數據出現變動
    發表于 03-28 14:19

    基于OpenHarmony3.1開發的一個分布式手寫板應用

    1.介紹基于TS擴展的聲明開發范式開發一個分布式手寫板應用。涉及的OS特性有分布式拉起和分布式數據管理,使用這兩個特性
    發表于 04-07 11:42

    OpenHarmony標準設備應用開發(三)——分布式數據管理

    數據同步更新。當我們需要在多臺設備實現
    發表于 04-07 18:48

    OpenHarmony3.1分布式技術資料合集

    手寫板應用。涉及的OS特性有分布式拉起和分布式數據管理,使用這兩個特性實現不同設備拉起與筆跡
    發表于 04-11 11:50

    OpenHarmony 3.1 Beta版本關鍵特性解析——分布式DeviceProfile

    采集本設備設備信息;? HiChain:設備互信認證服務,管理設備的可信群組;? 分布式
    發表于 04-25 11:14

    【學習打卡】OpenHarmony的分布式數據管理介紹

    分布式數據管理,英文縮寫是DDM,是對一個系統中創建和收集的數據的提取、存儲、組織和維護的過程進行的有效控制和管理。有效的數據管理對于運行應
    發表于 07-15 15:49

    【學習打卡】OpenHarmony的分布式任務調度

    之前我們分享過分布式軟總線和分布式數據管理,今天主要說一下OpenHarmony的分布式任務調度,分布式任務調度是建立在
    發表于 07-18 17:06

    鴻蒙開發接口數據管理:【@ohos.data.distributedData (分布式數據管理)】

    分布式數據管理為應用程序提供不同設備數據庫的分布式協同能力。通過調用
    的頭像 發表于 06-07 09:30 ?1069次閱讀
    鴻蒙開發接口<b class='flag-5'>數據管理</b>:【@ohos.data.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>數據管理</b>)】
    做生意的怎样招财| 葡京百家乐注码| 在线娱乐城注册送彩金| 利赢百家乐现金网| 八大胜百家乐官网现金网| 威尼斯人娱乐城注册| 百家乐下注几多| 沈阳棋牌网| 康莱德百家乐的玩法技巧和规则| 飞天百家乐官网的玩法技巧和规则 | 万人迷百家乐的玩法技巧和规则| 查找百家乐官网群| 百家乐官网在线投注顺势法| 亲朋棋牌手机版下载| 百家乐单人操作扫描道具| 百家乐官网园百乐彩| 联众博彩| 大发888官方爱好| 曼哈顿百家乐的玩法技巧和规则 | 百家乐官网技巧论坛| 在线老虎机| 云顶娱乐| 钱柜娱乐城怎么样| 亚洲顶级赌场第一品牌| 威尼斯人娱乐代理注| 巴比伦百家乐的玩法技巧和规则| 澳门百家乐打法精华| 免费百家乐官网统计软件| 一直对百家乐官网很感兴趣.zibo太阳城娱乐城| 青铜峡市| 建始县| 明水县| 曲沃县| 百家乐真人游戏| 金冠娱乐城开户| 香港六合彩全年资料| 香港六合彩资料| 威尼斯人娱乐场xpjgw5xsjgw| 百家乐棋牌游戏皇冠网| 百家乐官网凯时赌场娱乐网规则| 百家乐官网制胜法宝|