当前位置: 首页 > news >正文

HarmonyOS全栈开发指南:从入门到精通,构建万物智联的未来生态(三)

第三篇:应用开发基础

11. Ability框架:Page/Service/Data Ability深度解析

1. Ability框架概述
Ability是HarmonyOS应用的基本组成单元,分为Page Ability、Service Ability和Data Ability三种类型:

  • Page Ability:用于提供用户界面,承载UI交互。

  • Service Ability:用于后台任务处理,无界面。

  • Data Ability:用于数据共享与访问,提供统一的数据接口。

2. Page Ability详解
Page Ability是应用与用户交互的核心,其生命周期包括以下状态:

  • onStart():Ability可见但未获得焦点。

  • onActive():Ability获得焦点,可交互。

  • onInactive():Ability失去焦点。

  • onBackground():Ability进入后台。

  • onStop():Ability销毁。

代码示例:创建Page Ability


import Ability from '@ohos.application.Ability';
import window from '@ohos.window';

export default class MainAbility extends Ability {
  onStart() {
    console.log('MainAbility onStart');
    // 创建窗口
    window.create(this.context, "mainWindow", (err, data) => {
      if (err) {
        console.error('Failed to create window. Cause: ' + JSON.stringify(err));
        return;
      }
      // 加载页面
      this.context.loadContent('pages/index', (err, data) => {
        if (err) {
          console.error('Failed to load the content. Cause: ' + JSON.stringify(err));
          return;
        }
        console.log('Succeeded in loading the content. Data: ' + JSON.stringify(data));
      });
    });
  }

  onActive() {
    console.log('MainAbility onActive');
  }

  onInactive() {
    console.log('MainAbility onInactive');
  }

  onBackground() {
    console.log('MainAbility onBackground');
  }

  onStop() {
    console.log('MainAbility onStop');
  }
}

3. Service Ability详解
Service Ability用于执行后台任务,如音乐播放、文件下载等。其生命周期包括:

  • onStart():Service启动时调用。

  • onCommand():每次启动Service时调用。

  • onConnect():绑定Service时调用。

  • onDisconnect():解绑Service时调用。

  • onStop():Service停止时调用。

代码示例:创建Service Ability


import Ability from '@ohos.application.Ability';

export default class MyServiceAbility extends Ability {
  onStart() {
    console.log('MyServiceAbility onStart');
  }

  onCommand(want, startId) {
    console.log('MyServiceAbility onCommand');
    // 执行后台任务
    this.downloadFile();
  }

  onConnect(want) {
    console.log('MyServiceAbility onConnect');
    return new MyRemoteObject();
  }

  onDisconnect(want) {
    console.log('MyServiceAbility onDisconnect');
  }

  onStop() {
    console.log('MyServiceAbility onStop');
  }

  downloadFile() {
    // 模拟文件下载
    console.log('Downloading file...');
  }
}

class MyRemoteObject extends rpc.RemoteObject {
  constructor() {
    super();
  }

  onRemoteRequest(code, data, reply, option) {
    console.log('MyRemoteObject onRemoteRequest');
    return true;
  }
}

4. Data Ability详解
Data Ability用于跨应用数据共享,支持对数据库、文件等数据源的统一访问。其核心方法包括:

  • insert():插入数据。

  • delete():删除数据。

  • update():更新数据。

  • query():查询数据。

代码示例:创建Data Ability


import Ability from '@ohos.application.Ability';
import dataAbility from '@ohos.data.dataAbility';

export default class MyDataAbility extends Ability {
  onStart() {
    console.log('MyDataAbility onStart');
  }

  insert(uri, valueBucket, callback) {
    console.log('MyDataAbility insert');
    // 插入数据逻辑
    callback(null, 1); // 返回插入的行ID
  }

  delete(uri, predicates, callback) {
    console.log('MyDataAbility delete');
    // 删除数据逻辑
    callback(null, 1); // 返回删除的行数
  }

  update(uri, valueBucket, predicates, callback) {
    console.log('MyDataAbility update');
    // 更新数据逻辑
    callback(null, 1); // 返回更新的行数
  }

  query(uri, columns, predicates, callback) {
    console.log('MyDataAbility query');
    // 查询数据逻辑
    const result = [{ id: 1, name: 'HarmonyOS' }];
    callback(null, result);
  }
}

5. 实践建议

  • Page Ability:合理管理生命周期,避免内存泄漏。

  • Service Ability:长时间任务建议使用后台任务管理器。

  • Data Ability:设计清晰的数据访问接口,确保数据安全。


12. 应用生命周期管理与状态保存机制

1. 应用生命周期概述
HarmonyOS应用的生命周期包括:

  • 启动:应用从冷启动到前台运行。

  • 后台:应用进入后台,可能被系统回收。

  • 销毁:应用被用户或系统终止。

2. 状态保存与恢复

  • onSaveState():保存临时状态。

    import Ability from '@ohos.application.Ability';
    
    export default class MainAbility extends Ability {
      onSaveState() {
        console.log('MainAbility onSaveState');
        return { key: 'value' }; // 返回需要保存的状态
      }
    
      onRestoreState(state) {
        console.log('MainAbility onRestoreState');
        console.log('Restored state:', state);
      }
    }
  • onRestoreState():恢复临时状态。

代码示例:状态保存与恢复

3. 实践建议

  • 及时保存关键状态,避免数据丢失。

  • 恢复状态时检查数据有效性。


13. 资源文件管理与多语言国际化实践

1. 资源文件管理

  • 资源目录结构resources/base/存放默认资源,resources/zh_CN/存放中文资源。

  • 资源类型:字符串、颜色、尺寸、图片等。

2. 多语言国际化

  • 定义多语言字符串:在resources/base/element/string.json中定义默认语言,在resources/zh_CN/element/string.json中定义中文。

  • 代码中引用资源

  • import Resource from '@ohos.resource';
    
    let str = this.context.resourceManager.getString($r('app.string.hello'));
    console.log(str);

3. 实践建议

  • 使用资源ID而非硬编码。

  • 定期检查资源文件的完整性和一致性。


14. 日志系统与高效调试方法论

1. 日志系统

  • 日志级别:debug、info、warn、error。

  • 代码示例

typescript

复制

import hilog from '@ohos.hilog';

hilog.info(0x0000, 'testTag', 'This is a log message.');

2. 调试方法论

  • 使用DevEco Studio的断点调试功能。

  • 结合日志和性能分析工具定位问题。


15. 应用签名与发布流程详解

1. 应用签名

  • 生成签名证书。

  • 配置签名信息。

2. 发布流程

  • 打包应用。

  • 提交至应用市场。

相关文章:

  • 【模板】图论 最短路 (Floyd+SPFA+Dijkstra)
  • QT C++ new QTableWidgetItem 不需要删除指针
  • IDEA CodeGPT 使用教程
  • Qt QToolBox 组件总结
  • MySQL 事务:确保数据一致性的核心机制
  • 基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
  • 【JavaEE进阶】Spring MVC(3)
  • C# 实现完善 Excel 不规则合并单元格数据导入
  • Cherry-Studio下载安装教程,AI面向开发者的工具或平台(付安装包)
  • R软件用潜在类别混合模型LCM分析老年人抑郁数据轨迹多变量建模研究
  • C++效率掌握之STL库:list函数全解
  • el-select:有关多选,options选项值不包含绑定值的回显问题
  • AI前端开发技能提升与ScriptEcho:拥抱智能时代的新机遇
  • 基于Java EE“陕西农特产品”网络交易平台设计与实现(源码+文档)
  • 乾崑版再添两大版型,全新岚图梦想家推动高阶智驾平权
  • 为什么视频编码是对YUV而不是RGB
  • 零基础学python(持续更新中。。。)
  • 市场波动中的数据分析与策略优化
  • 寒假总结。
  • JAVA中常用类型
  • 巴中手机网站建设/app优化
  • 网站图片代码怎么做的/百度云官方网站
  • 网站后台管理员怎么做/免费seo快速排名系统
  • 亳州网站建设推广/网站推广100种方法
  • 南宁营销网站建设/山东16市最新疫情
  • 开源网站建设工具/优就业seo