一. 乐观UI
1. 乐观UI更新说明
平常删除大文件及某些'无网环境可操作手机,等有网后再提交内容到服务器'的这些操作,均可使用乐观UI更新;
删除大文件: 先再UI上将大文件视觉上删除,然后再发送请求删除数据库内的数据,这就是乐观UI删除;因为视觉UI上做到文件被删除的效果很少消耗性能(很快UI就能展现效果),而真实数据库数据的删除却很可能消耗大量时间,所以就放在后面慢慢执行;先做到视觉上先呈现;
'无网环境可操作手机,等有网后再提交内容到服务器':此场景就是先本地进行修改等操作,有网后再发送请求一次性提交到服务器,此举也是为了先实现效果,后执行需要耗费高性能高时间的操作.
2. 如何实现
使用如下截图两个步骤
二. 剪切板管理(文本设置到剪切板 及 读取剪切板)
pasteboard包: import { pasteboard } from '@kit.BasicServicesKit'
1. 文本设置到剪切板
首先配置读取剪贴板权限(注意:此权限需要API12,且要重新签名)
{
// API 12 要求,读取剪贴板需要申请权限,注意:应用需要重新签名 (ACL 权限)
"name": "ohos.permission.READ_PASTEBOARD",
"reason": "$string:permission_reason_pasteboard",
"usedScene": {}
},
代码中主要有三个步骤:
(1)获取系统剪切板的对象
// 1. 获取系统剪贴板
const systemPasteboard = pasteboard.getSystemPasteboard()
(2)准备数据(需指定类型)
// 2. 准备数据(需指定类型)
const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, text)
(3)将数据设置到剪贴板中
// 3. 把数据设置到剪贴板中
systemPasteboard.setData(pasteData)
经过这些步骤,如果再将这些步骤封装到一个manager文件夹(通常用来存封装代码)中,代码将更优美; 之后再对此功能进行调用即可;
2. 读取剪切板
编写步骤与"设置到剪切板"有些相似:
(1)获取系统剪切板的对象
// 1. 获取系统剪贴板
const systemPasteboard = pasteboard.getSystemPasteboard()
(2)读取剪切板的数据(注意一个坑点: 如果剪切板没数据, 返回undefined,可能导致报错)
// 2.读取剪切板的数据(坑点: 如果剪切板没数据, 返回undefined,可能导致报错)
const pasteData = systemPasteboard.getDataSync()
(3)提取出内容 使用?. 表示可选,也就是可以为undefined
// 3.提取出内容 使用?. 表示可选,也就是可以为undefined
return pasteData?.getPrimaryText() || ''
使用: 最后调用封装的"读取剪切板"功能
三.其他知识点
EntryAbility.ets的onForeground()方法作用是 切前台,也就是打开应用时 做哪些事情/加载哪些数据.