HarmonyOS
2020-10-10 09:41:31 0 举报
AI智能生成
HarmonyOS开发
作者其他创作
大纲/内容
线程
线程管理
概述
不同应用在独立的进程中运行
完成/等待/系统资源不足时,系统自动回收
主线程(UI线程)
耗时任务创建其他线程处理
实现
TaskDispatcher任务分发器
Ability分发任务的基本接口
优先级
实现类
GlobalTaskDispatcher 全局并发任务分发器
ParallelTaskDispatcher 并发任务分发器
SerialTaskDispatcher 串行任务分发起器
SpecTaskDispatcher 专有任务分发器
线程间通信
线程切换 EventHandler
子线程通过EventHandler通知主线程
EventRunner事件循环器
循环处理从该EventRunner创建的新线程事件队列中获取InnerEvent事件或Runnable任务
EventHandler
投递InnerEvent事件或Runnable任务到异步线程处理的机制
运作机制
EventHandler投递具体的InnerEvent事件或者Runnable任务到EventRunner所创建的线程的事件队列
EventRunner循环从事件队列中获取InnerEvent事件或者Runnable任务
处理事件或任务
Java UI框架
组件和布局
Component
概要
绘制在屏幕上的对象
可用于用户交互
功能
提供内容显示,页面组件基类
可回调可交互
ComponentContainer
容纳其他Component和ComponentContainer对象的容器
提供组件容器
页面布局
分类
布局类
PositionLayout、DirectionalLayout、StackLayout、DependentLayout、TableLayout、AdaptiveBoxLayout
显示类
Text、Image、Clock、TickTimer、ProgressBar
交互类
TextField、Button、Checkbox、RadioButton/RadioContainer、Switch、ToggleButton、Slider、Rating、ScrollView、TabList、ListContainer、PageSlider、PageFlipper、PageSliderIndicator、Picker、TimePicker、DatePicker、SurfaceProvider、ComponentProvider
布局
代码创建
XML创建
媒体
视频
图像
相机
音频
媒体会话管理
媒体数据管理
安全
权限
生物特征识别
网络与连接
NFC
蓝牙
WLAN
网络管理
电话服务
设备管理
传感器
控制类小器件
位置
设置
数据管理
关系型数据库
对象关系映射数据库
轻量级偏好数据库
分布式数据服务
分布式文件服务
融合搜索
数据存储管理
HarmonyOS
Ability
能力抽象
多种能力,多个Ability
支持应用以Ability为单位部署
组成
FA(Feature Ability)
Page Ability
提供与用户交互的能力
一个Page实例可以包含一组相关页面
每个页面用一个AbilitySlice实例表示
PA (Partcile Ability)
Service Ability
Service模板:用于提供后台运行任务的能力
Data Ability
Data模板:用于对外部提供同一对数据访问抽象
其他
在配置文件(config.json)中注册Ability时,可以通过配置Ability的\"type\"属性来指定Ability模版类型
type
page
service
data
能力
基本概念
一个Page可以由一个或多个AbilitySlice组成
AbilitySlice是至应用的单个页面及其控制逻辑的总和
即页面-业务能力-高度相关
支持不同Page跳转,或是跳转到目标Page的具体AbilitySlice
路由配置
SetMainRoute 默认AbilitySlice实例
AddActionRoute 自定义配置
Ability回调机制让Page感知外界变化并应对
生命周期
生命周期回调
onStart
创建Page实例触发
仅触发一次,进入INACTIVE状态
必须重写,并配置默认展示的AbilitySlice
onActive
与应用交互状态
onInactive
失去焦点行为
onBackground
Page对用户不可见,资源释放
onForeground
驻留在内存
可重新导航调起
onStop
销毁Page
系统管理,用户关系,配置变更,资源管理等因素触发
AbilitySlice
依托于Page
AbilitySlice间导航
属于同一个Page
present
presentForResult
系统为每个Page维护了一个AbilitySlice实例的栈,方法调用出入栈
不同Page导航
AbilitySlice作为Page内部单元,以Action形式对外暴露
配置Intent的Action导航到目标AbilitySlice
跨设备迁移
支持将Page在同一用户的不同设备迁移
步骤
设备A的Page请求迁移
HarmonyOS处理迁移任务,并回调设备A上Page的保存数据方法,保存迁移必须的数据
HarmonyOS在设备B上启动同一个Page,并回调其恢复数据方法
实现IAbilityContinuation接口
onStartContinuation 让用户确定是否可迁移
onSaveData 保存设备Page状态数据
onRestoreData 目标侧设备回调,用于恢复Page状态的数据
onCompleteContinuation 恢复数据完成,通知应用迁移流程结束
onRemoteTerminated
被终止时回调接收通知
主要用于后台运行任务
exp:音乐播放/文件下载
不提供用户交互界面
可由其他应用/Ability启动
单实例
一个设备,相同的Service只会存在一个实例
若多个Ability实例共享,需要当所有Ability退出后才能退出
主线程执行
需注意防止主线程阻塞
过程
创建Service
创建Ability的子类,实现Service生命周期方法
初始化
onCommand
每次启动Service都会调用,可用于统计,初始化类操作
onConnect
Ability和Service连接时调用
onDisconnect
Ability和Service断开连接时调用
销毁
启动Service
startAbility
目标Service信息
DeviceId 设备id
BundleName 包名称
AbilityName 待启动的Ability名称
连接Service
若Service需要与其他Service Ability进行交互,创建Connection,与其他Ability交互
处理回调
connectAbility
前台Service
让Service一直保持运行
管理自身及其其他应用存储数据的访问
提供与其他应用共享数据的方法
支持同设备不同应用,跨设备不同应用数据共享
数据存放形式多样
数据库/磁盘文件
对外提供CURD接口
由开发者提供
通过URI标示数据
格式
Scheme://[authority]/[path][?query][#fragment] 协议方案名-设备iD-资源路径-查询参数-访问的子资源
含义
Scheme:x协议类型
authority设备id
跨设备场景
目标设备ip
本地设备
不需要填写
path 资源路径信息
query 查询参数
fragment
指示要访问的子资源
示例
跨设备场景:dataability://device_id/com.huawei.dataability.persondata/person/10
本地设备:dataability:///com.huawei.dataability.persondata/person/10
访问Data
声明使用权限
配置
创建DataAbilityHelper
creator()
访问DataAbility
访问文件
访问数据库
创建Data
确定数据存储方式
文件数据:文本/图片/音乐等
结构化数据
数据库
实现UseDataAbility
注册UserDataAbility
Intent
对象传递信息的载体
Ability间导航
Ability间数据通信
构成
Operation
Action
Entity
Uri
Flags
BundleName
AbilityName
DeviceId
Parameters
Ability Form
表单,Page形态的Ability的一种界面展示形式
界面嵌套,提供基础交互功能
表单提供方
Page形态Ability
表单使用方
通常是桌面类应用
分布式任务调度
为应用定义统一的能力基线、接口形式、数据结构、服务描述语言,屏蔽硬件差异;支持远程启动、远程调用、业务无缝迁移等分布式任务
底层实现跨设备组件管理
启动和关闭
提供远程Ability能力
连接和断开连接
跨设备控制服务,远程连接和实现本地一致的服务调度
迁移能力
跨设备无缝迁移
约束&限制
在Intent设置支持分布式标记
在PA, FA指定支持行为
公共事件通知
通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力
通过ANS(Advanced Notification Service,即高级通知服务)系统服务来为应用程序提供发布通知的能力
公共事件
CommonEventData
CommonEventPublishInfo
CommonEventSubscribeInfo
CommonEventSubscriber
CommonEventManager
通知
NotificationSlot
NotificationRequest
span style=\
IntentAgent
封装了一个指定行为的Intent
包括启动Ability和发送公共事件
IntentAgentHelper
IntentAgenInfo
IntentAgenConstant
TriggerInfo
剪贴板
应用A复制,B应用粘贴
0 条评论
回复 删除
下一页