UIAbility从字面意思可以得知是用户界面能力,UI用户界面,Ability能力。
UIAbility组件是系统调度的基本单元,用于绘制窗口,一个应用可以包括一个或者多个UIAbility组件。我是这么理解的,UIAbility同uniapp开发有着异曲同工之处,类似于我分了四个tabbar页面,如商城可以是首页、分类、订单和我的,这四个tabbar分别对应了四个目录,每个目录名称相当于是一个UIAbility组件,而目录中又可以有多个vue文件,而UIAbility组件也可以对应多个page页面。
每个UIAbility组件实例都会在设备最近任务列表中显示一个对应的任务。
对于一个开发者而言,可以根据具体的场景选择单个还是多个UIAbility,划分规则如下:
1、假如我们希望在任务列表中看到一个任务,那么我们就可以采用一个UIAbility+多个页面的形式,这样可以避免加载不必要的资源。
2、假如我们希望在任务列表中看到多个任务或者开启多个窗口,那么我们就要采用多个UIAbility实现不同的功能;例如微信的消息通知任务和音视频任务就归属于两个UIAbility,这样既可以方便的切换任务窗口,又可以实现应用的两个任务窗在同一个屏幕上分屏显示。
在module.json5的abilities标签中定义UIAbility的名称、入口、标签等,如下代码所示:
{
"module": {
// ...
"abilities": [
{
"name": "EntryAbility", // UIAbility组件的名称
"srcEntry": "./ets/entryability/EntryAbility.ets", // UIAbility组件的代码路径
"description": "$string:EntryAbility_desc", // UIAbility组件的描述信息
"icon": "$media:icon", // UIAbility组件的图标
"label": "$string:EntryAbility_label", // UIAbility组件的标签
"startWindowIcon": "$media:icon", // UIAbility组件启动页面图标资源文件的索引
"startWindowBackground": "$color:start_window_background", // UIAbility组件启动页面背景颜色资源文件的索引
// ...
}
]
}
}
发表回复