鸿蒙开发学习笔记 #5 (最终)
学习时间: 2026-03-14 02:15
主题: 分布式能力与性能优化
---
1. 分布式能力
1.1 分布式数据管理
import distributedDataObject from '@ohos.data.distributedDataObject';
import distributedDeviceManager from '@ohos.distributedDeviceManager';
class DistributedManager {
private dataObject: distributedDataObject.DataObject | null = null;
// 创建分布式数据对象
createSharedData(context, initialData: object) {
this.dataObject = distributedDataObject.create(context, initialData);
// 监听数据变化
this.dataObject.on('change', (sessionId, fields) => {
console.log('数据变更:', fields);
});
}
// 加入组网
joinSession(networkId: string) {
if (this.dataObject) {
this.dataObject.setSessionId(networkId);
}
}
// 修改数据 (自动同步)
updateData(key: string, value: any) {
if (this.dataObject) {
(this.dataObject as any)[key] = value;
}
}
}
1.2 跨设备迁移
import ability from '@ohos.app.ability.abilityPlus';
// 发起跨设备迁移
async function migrateToDevice(targetDeviceId: string) {
const migrationInfo = {
targetDeviceId: targetDeviceId,
migrateAbilityName: 'EntryAbility',
migrateBundleName: 'com.example.myapp'
};
try {
await ability.migrateAbility(migrationInfo);
console.log('迁移成功');
} catch (error) {
console.error('迁移失败:', error);
}
}
1.3 分布式任务调度
import distributedScheduler from '@ohos.distributedScheduler';
// 跨设备启动能力
async function startRemoteAbility() {
const want = {
bundleName: 'com.example.remoteapp',
abilityName: 'RemoteAbility'
};
try {
await distributedScheduler.startRemoteAbility(want);
console.log('远程能力启动成功');
} catch (error) {
console.error('启动失败:', error);
}
}
---
2. 权限管理
2.1 声明权限
// module.json5
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"reason": "$string:internet_permission_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "always"
}
},
{
"name": "ohos.permission.GET_LOCATION",
"reason": "$string:location_permission_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
}
]
}
}
2.2 动态申请权限
import abilityAccessCtrl from '@ohos.app.ability.accessControl';
class PermissionManager {
// 检查权限
async checkPermission(permission: string): Promise {
const atManager = abilityAccessCtrl.createAtManager();
const status = await atManager.verifyAccessToken(
getContext(this).applicationInfo.accessTokenId,
permission
);
return status === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED;
}
// 申请权限
async requestPermission(permissions: string[]): Promise {
const atManager = abilityAccessCtrl.createAtManager();
return await atManager.requestPermissionsFromUser(
getContext(this) as abilityAccessCtrl.UIAbilityContext,
permissions
);
}
}
// 使用示例
const permManager = new PermissionManager();
const hasLocation = await permManager.checkPermission('ohos.permission.GET_LOCATION');
if (!hasLocation) {
const results = await permManager.requestPermission(['ohos.permission.GET_LOCATION']);
if (results[0]) {
console.log('位置权限已授权');
}
}
---
3. 性能优化
3.1 懒加载 LazyForEach
@State dataList: string[] = [];
// 使用 LazyForEach 实现列表虚拟滚动
LazyForEach(this.dataSource, (item: string) => {
ListItem() {
Text(item)
.padding(10)
}
}, (item: string) => item)
3.2 图片懒加载
// 使用缓存和占位
Image('https://example.com/large-image.jpg')
.alt($r('app.media.placeholder')) // 加载中显示
.asyncLoad(true) // 异步加载
3.3 @Concurrent 装饰器 - 并发编程
import taskpool from '@ohos.taskpool';
// 标记为可并发执行的函数
@Concurrent
function heavyComputation(data: number[]): number {
// 在后台线程执行耗时计算
let result = 0;
for (const num of data) {
result += Math.sqrt(num) * Math.log(num + 1);
}
return result;
}
// 在主线程调用
async function doHeavyTask() {
const data = Array.from({ length: 10000 }, (_, i) => i);
const task = new taskpool.Task(heavyComputation, data);
const result = await taskpool.execute(task);
console.log('计算结果:', result);
}
3.4 内存优化
class MemoryManager {
// 使用完毕后及时释放
releaseResource(resource) {
if (resource) {
resource.release();
resource = null;
}
}
// 使用 WeakRef 避免内存泄漏
private cache: Map> = new Map();
setCache(key: string, value: object) {
this.cache.set(key, new WeakRef(value));
}
getCache(key: string): object | undefined {
return this.cache.get(key)?.deref();
}
}
---
4. 常见 API 参考
4.1 定时器与延迟
// setTimeout
setTimeout(() => {
console.log('延迟执行');
}, 1000);
// setInterval
const timer = setInterval(() => {
console.log('每秒执行');
}, 1000);
// 清除定时器
clearInterval(timer);
4.2 日志打印
import hilog from '@ohos.hilog';
const domain = 0x0001;
const tag = 'MyApp';
hilog.info(domain, tag, 'Info log: %{public}s', 'message');
hilog.debug(domain, tag, 'Debug log: %{public}s', 'message');
hilog.warn(domain, tag, 'Warn log: %{public}s', 'message');
hilog.error(domain, tag, 'Error log: %{public}s', 'message');
---
📝 学习总结
✅ 已掌握技能
|------|------|
🚀 进阶学习方向
- **HarmonyOS NEXT** 特有 API
- **AI 能力集成** (语音、视觉)
- **ArkUI 3.0** 高级特性
- **鸿蒙原生应用实战**
---
📚 学习资源汇总
- 华为开发者官网: https://developer.huawei.com/consumer/cn/
- HarmonyOS SDK: https://developer.huawei.com/consumer/cn/sdk/
- OpenHarmony: https://gitee.com/openharmony
- 鸿蒙开发者社区: https://bbs.csdn.net/forums/harmonyos
---
学习笔记完成!🎉
完成时间: 2026-03-14 02:15
总学习时长: 约 2 小时