HarmonyOS入门手册(一):Ability & Slice

简介

  • 什么是Ability ?
    Ability是应用所具备的抽象能力,是应用的重要组成部分。
    例如,我们在初次使用QQ时,需要注册一个QQ号,这表明QQ有 "注册" 能力;我们还可以发送信息给其它
用户,这表明QQ有 "发送信息" 的能力;QQ还会把我们传输的文件保存在特定的文件夹里,表明QQ有 "数据存
取" 功能。
  • 什么是Slice ?
    在上面的例子中,当我们注册QQ号时,需要设置密码、绑定手机号、填写验证码……,在各种界面之间跳转,
而这些界面我们就称之为Slice 。
  • Ability与Slice的关系 ?
可以看出,一个应用是由各种Ability组合而成的,而一个Ability,又可能包含若干个Slice

Ability分类

HarmonyOS入门手册(一):Ability & Slice

  • Feature Ability:用于与用户进行交互,包含一个或多个Slice
  • Atomic Ability:不需要与用户进行交互的Ability,没有对应的Slice(分为Service模板、Data模板)

Ability和Slice的生命周期方法

HarmonyOS入门手册(一):Ability & Slice


Slice之间的切换

概述

同一Ability下不同Slice进行切换

相关函数

present(targetSlice, Intent intent);

//从当前Slice跳转到targetSlice,并用Intent携带信息,常常写成:
present(new targetSlice(), new Intent());

Intent

概述: 对象之间传递信息的载体,由OperationParameters构成

构成元素

HarmonyOS入门手册(一):Ability & Slice

相关函数

//设置intent携带的数据
setParam(KEY key, VAL value)

//获取intent携带的对应key的val
getStringParam(KEY key)
    
//设置intent携带的Action
setAction(String Action)

Ability之间切换

  1. 注册Ability,并设置Action

    1. 所有的Ability都需要在config.json中注册
    2. 我们需要在每个注册的Ability中设置Action,以后在Ability间跳转时需要使用targetAbility的Action
    
    
    "abilities": [
        
                               =============== Ability 1 ===============
          {
            "skills": [
              {
                "entities": [
                  "entity.system.home"
                ],
                "actions": [
                  "action.system.home"
                ]
              }
            ],
            "orientation": "landscape",
            "name": "com.example.lningdemo.MainAbility",
            "icon": "$media:icon",
            "description": "$string:mainability_description",
            "label": "LNingDemo",
            "type": "page",
            "launchType": "standard"
          },
        
        
                               =============== Ability 2 ===============
          {
            "skills": [
              {
    
                "actions": [
                  "action.new"									//设置Action,只要与其它Ability的不重复即可
                ]
              }
            ],
            "orientation": "landscape",
            "name": "com.example.lningdemo.NewAbility",
            "icon": "$media:icon",
            "description": "$string:mainability_description",
            "label": "LNingDemo",
            "type": "page",
            "launchType": "standard"
          }
    
        ]
    
  2. 创建Intent对象,并设置其携带targetAbility的Action

    Intent intent = new Intent();
    intent.setAction("action.new");
    startAbility(intent);
    
上一篇:Vue如何自定义一个过滤器


下一篇:GO语言实战——第四章