# crossDeviceDataSynchronization1
**Repository Path**: ljh-project/cross-device-data-synchronization1
## Basic Information
- **Project Name**: crossDeviceDataSynchronization1
- **Description**: 跨设备数据同步跨设备数据同步
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-07-16
- **Last Updated**: 2025-08-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 跨设备数据同步
## 项目简介
本示例将以3个案例介绍跨设备数据同步和应用接续的实现方式:
1. 通讯录案例:介绍分布式键值数据库的创建、数据的增加/删除/修改/查询/同步等操作方法。
2. 账单案例:介绍关系型数据库的创建、数据的增加/删除/修改/查询/同步等操作方法。
3. 邮件案例:介绍分布式数据对象跨设备传输数据,通过点击系统Dock栏,使应用接续并进行数据传输。
## 效果预览
| 通讯录案例 | 账单案例 | 邮件案例 |
|---------------------------------------------------------|------------------------------------------------------------------|-----------------------------------------------------------------|
|
|
|
|
## 使用说明
### 通讯录案例
1. 应用首页,点击右上角的“添加”按钮,进入新建联系人页面。
2. 应用首页,点击右上角的“更多”按钮,点击“批量删除”,进入联系人批量删除页面。
3. 应用首页,点击列表联系人,进入联系人详情页面。
4. 联系人详情页面,点击下方"编辑"按钮,进入联系人编辑页面。
5. 联系人详情页面,点击下方“删除”按钮,删除该联系人。
6. 新建联系人页面,输入联系人信息后,点击右上“保存”按钮,添加联系人,页面跳转到应用首页。
7. 联系人批量删除页面,点击下方全选,全部选中/不选中所有联系人。
8. 联系人批量删除页面,选中需要删除的联系人,下方点击“删除”按钮,删除选中的联系人。
9. 联系人编辑页面,编辑好联系人信息后,点击右上角的“保存”按钮,修改联系人信息。
### 账单案例
1. 在应用首页,点击右下角“添加”图标,在弹出的窗口中选择账目类型并填写金额,点击“确定”按钮添加一条账目。
2. 在应用首页,点击右上角“编辑”图标,选中想要删除的账目,点击下方“删除”图标,删除选择的账目。
3. 在应用首页,点击想要编辑的账目,在弹出的窗口中更改账目类型或金额,点击“确定”按钮修改一条账目。
4. 在应用首页,点击搜索栏,填写想要查找的账目金额,点击“搜索”图标后下方刷新为金额为查找金额的账目,搜索栏为空时显示全部账目。
### 邮件案例
1. 进入应用首页,可以在收件人、发件人、主题文本框输入相应内容。
2. 本端打开分布式邮件应用,对端设备的Dock栏中会新增分布式邮件应用图标,点击分布式邮件应用,本端应用会接续到对端设备上去。
## 工程目录
```
├──entry/src/main/ets
│ ├──common
│ │ └──CommonConstants.ets // 常量集合
│ ├──components
│ │ ├──BillDialog.ets // 账单弹窗组件
│ │ ├──ContactBottomBar.ets // 通讯录删除页面底部tab组件
│ │ ├──ContactDeleteDialog.ets // 通讯录删除弹窗组件
│ │ ├──ContactDetailItem.ets // 通讯录详情页列表项组件
│ │ ├──ContactDeviceDialog.ets // 通讯录设备弹窗组件
│ │ ├──ContactListArea.ets // 通讯录列表页列表组件
│ │ └──ContactListItem.ets // 通讯录列表页列表项组件
│ ├──entryability
│ │ └──EntryAbility.ets // 入口文件
│ ├──pages
│ │ ├──BillHomePage.ets // 账单首页
│ │ ├──ContactAddAndEditPage.ets // 通讯录添加和编辑页面
│ │ ├──ContactDeletePage.ets // 通讯录删除页面
│ │ ├──ContactDetailPage.ets // 通讯录详情页面
│ │ ├──ContactHomePage.ets // 通讯录首页
│ │ ├──Index.ets // 首页
│ │ └──MailHomePage.ets // 邮件首页
│ ├──utils
│ │ ├──CheckEmptyUtils.ets // 检查工具类
│ │ ├──ContactDeviceManager.ets // 通讯录设备管理类
│ │ ├──ContactManager.ets // 通讯录管理类
│ │ ├──GlobalContext.ets // 公共对象管理类
│ │ ├──KvManager.ets // 键值型数据库管理类
│ │ ├──Logger.ets // 日志打印管理类
│ │ ├──MailInfoManager.ets // 邮件信息管理类
│ │ └──RdbManager.ets // 关系型数据库管理类
│ └──viewmodel
│ ├──BillViewModel.ets // 账单model
│ ├──ContactViewModel.ets // 通讯录model
│ └──MailViewModel.ets // 邮件model
└──entry/src/main/resources // 资源文件
```
## 相关概念
- 应用数据持久化概述:应用数据持久化,是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象,存储介质上的数据形态可能是文本、数据库、二进制文件等。
- 键值型数据库:键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同数据库版本和设备类型,因此推荐使用键值型数据库持久化此类数据。
- distributedKVStore (分布式键值数据库)
:分布式键值数据库为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式键值数据库各个接口,应用程序可将数据保存到分布式键值数据库中,并可对分布式键值数据库中的数据进行增加、删除、修改、查询等操作。
- 关系型数据库:基于关系模型来管理数据的数据库,提供了增、删、改、查等接口,也可运行输入的SQL语句满足复杂场景需要。
- 应用接续:通过应用接续,可以实现将应用当前任务(包括页面控件状态变量等)迁移到目标设备,并在目标设备上接续使用。
## 相关权限
* ohos.permission.DISTRIBUTED_DATASYNC:允许不同设备间的数据交换。
## 依赖
不涉及。
## 约束与限制
1. 本示例仅支持标准系统上运行,支持设备:华为手机。
2. HarmonyOS系统:HarmonyOS 5.1.1 Release及以上。
3. DevEco Studio版本:DevEco Studio 5.1.1 Release及以上。
4. HarmonyOS SDK版本:HarmonyOS 5.1.1 Release SDK及以上。
5. 双端设备需要登录同一华为账号,建议打开查找设备功能。
6. 双端设备需要打开Wi-Fi和蓝牙开关。
7. 双端设备都需要有该应用。