ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-03-21 14:05:59  阅读:368  来源: 互联网

标签:Slice Ability HarmonyOS Intent new Action intent


简介

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

Ability分类

在这里插入图片描述

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

Ability和Slice的生命周期方法

在这里插入图片描述


Slice之间的切换

概述

同一Ability下不同Slice进行切换

相关函数

present(targetSlice, Intent intent);

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

Intent

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

构成元素

在这里插入图片描述

相关函数

//设置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);
    

标签:Slice,Ability,HarmonyOS,Intent,new,Action,intent
来源: https://blog.csdn.net/Cegan/article/details/115047152

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有