电子产业一站式赋能平台

PCB联盟网

搜索
查看: 788|回复: 0
收起左侧

用鸿蒙开发AI应用(七)触摸屏控制LED

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2021-1-11 09:56:58 | 显示全部楼层 |阅读模式
用鸿蒙开发AI应用(七)触摸屏控制LED,   


前言
  上一篇,我们体验了一下鸿蒙上的界面的开发流程,这一篇我们继续深入一点点,尝试打通从用户态UI到内核态HDF之间的联系。其中涉及到的调用关系比较复杂,建议在“用鸿蒙开发AI应用(五)HDF 驱动补光灯”的基础上阅读本文,HDF的相关细节这里就不在赘述了。





背景知识 用户程序框架子系统包含两个大的模块:Ability子系统和包管理子系统。
1. Ability子系统
1.1 Ability Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为两种类型:Page类型的Ability和Service类型的Ability

  • Page类型的Ability:带有界面,为用户提供人机交互的能力。  
  • Service类型的Ability:不带界面,为用户提供后台任务机制。
      

1.2 AbilitySlice AbilitySlice是单个页面及其控制逻辑的总和,是Page类型Ability特有的组件,一个Page类型的Ability可以包含多个AbilitySlice,此时,这些页面提供的业务能力应当是高度相关的。
1.3 生命周期 生命周期是Ability被调度到启动、激活、隐藏和退出等各个状态的的统称。 Ability生命周期各状态解析:

  • UNINItiALIZED:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态;  
  • INITIAL:初始化状态,也表示停止状态,表示当前Ability未运行,调用Start后进入INACTIVE,同时回调开发者的OnStart生命周期回调;  
  • INACTIVE:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。  
  • ACTIVE:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态;  
  • BACKGROUND: 后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。
      

1.4 AbilityLoader AbilityLoader负责注册和加载开发者Ability的模块。开发者开发的Ability先要调用AbilityLoader的注册接口注册到框架中,接着Ability启动时会被实例化。
1.5 AbilityManager AbilityManager负责AbilityKit和Ability管理服务进行IPC的通信。
1.6 EventHandler EventHandler是AbilityKit提供给开发者的用于在Ability中实现线程间通信的一个模块。
1.7 Ability运行管理服务 Ability运行管理服务是用于协调各Ability运行关系、及生命周期进行调度的系统服务。 其中,服务启动模块负责Ability管理服务的启动、注册等。 服务接口管理模块负责Ability管理服务对外能力的管理。 进程管理模块负责Ability应用所在进程的启动和销毁、及其进程信息维护等功能。Ability栈管理模块负责维护各个Ability之间跳转的先后关系。 生命周期调度模块是Ability管理服务根据系统当前的操作调度Ability进入相应的状态的模块。 连接管理模块是Ability管理服务对Service类型Ability连接管理的模块。
1.8 AppSpawn AppSpawn是负责创建Ability应用所在进程的系统服务,该服务有较高的权限,为Ability应用设置相应的权限,并预加载一些通用的模块,加速应用的启动。
2. 包管理子系统 包管理子系统,是OpenHarmony为开发者提供的安装包管理框架。

  • BundleKit:是包管理服务对外提供的接口,有安装/卸载接口、包信息查询接口、包状态变化监听接口。  
  • 包扫描器:用来解析本地预制或者安装的安装包,提取里面的各种信息,供管理子模块进行管理,持久化。  
  • 包安装子模块:安装,卸载,升级一个包; 包安装服务一个单独进程的用于创建删除安装目录,具有较高的权限。  
  • 包管理子模块:管理安装包相关的信息,存储持久化包信息。  
  • 包安全管理子模块:签名检查、权限授予、权限管理。
      

HDF驱动LED(可选) 之前在内核中已经注册过一个led_driver驱动,并以led_service服务发布,这一节稍微重构一下代码,功能上没有变化,我们快速过一遍,熟悉HDF的可以自行跳过。
1. 业务代码 先新建头文件vendor\huawei\hdf\led\include\led_ctrl.h。 #ifndef _LED_CTRL_H

#define _LED_CTRL_H

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表