首页 > 其他分享 >ArkTS #02# Ability的调用及启动模式

ArkTS #02# Ability的调用及启动模式

时间:2024-08-04 15:18:40浏览次数:12  
标签:02 ArkTS Ability want EntryAbility1 fontSize common Want myKey

1调用&单实例

import common from '@ohos.app.ability.common'
import Want from '@ohos.app.ability.Want'
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)

        Button('jump ab2 ').fontSize(55).onClick(() => {
          // 1 获取上下文
          let context = getContext(this) as common.UIAbilityContext

          // 2 封装want
          let want: Want = {
            deviceId: "",
            bundleName: "com.example.myapplication",
            moduleName: "entry",
            abilityName: "EntryAbility1",
          }

          // 3 调用上下文的start ab  启动 目标ab
          context.startAbility(want)
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

单实例是Ability的默认启动模式,因此,无需在module.json5中配置EntryAbility1

2多实例

      {
        "name": "EntryAbility1",
        "srcEntry": "./ets/entryability1/EntryAbility1.ts",
        "description": "$string:EntryAbility1_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility1_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "launchType": "standard",
//        多实例启动方法 , 可以 独立多开
      }

3指定实例

从index跳转,在Want中附带个体信息:

import common from '@ohos.app.ability.common'
import Want from '@ohos.app.ability.Want'
@Entry
@Component
struct Index {
  @State numbers: number[] = []
  index: number = 0

  build() {
    Row() {
      Column() {
        Row() {
          if (this.numbers.length <= 0) {
            Text('please add numbers !!!!!').fontSize(55)
          } else {
            ForEach(this.numbers, x => {
              Text(x.toString())
                .fontSize(55)
                .border({width: 1})
                .onClick(() => {
                  let context = getContext(this) as common.UIAbilityContext
                  let want: Want = {
                    deviceId: "",
                    bundleName: "com.example.myapplication",
                    moduleName: "entry",
                    abilityName: "EntryAbility1",
                    parameters: {
                      myKey: x.toString(),
                    },
                  }
                  context.startAbility(want)
                })
            })
          }
        }

        Button('add').fontSize(55).onClick(() => {
          this.index++
          this.numbers.push(this.index)
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

未知步骤:

import AbilityStage from '@ohos.app.ability.AbilityStage';
import Want from '@ohos.app.ability.Want';

export default class MyStage extends AbilityStage {
  onAcceptWant(want: Want) {
    if (want.abilityName === 'EntryAbility1') {
      return "" + want.parameters.myKey
    }
    return ""
  }
}

改module.json5:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "srcEntry": "./ets/MyStage.ets",
    "deviceTypes": [
      "phone",
      "tablet"
    ],

改:

export default class EntryAbility1 extends UIAbility {
  onCreate(want, launchParam) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');

    let myKey = want.parameters.myKey
    AppStorage.SetOrCreate("_myKey", myKey)
  }

接参数:

@Entry
@Component
struct PageDetail {
  myKey: string = AppStorage.Get("_myKey")

  build() {
    Column() {
      Text(this.myKey).fontSize(66).fontColor(Color.Red)
      Text("page detail here. ").fontSize(66).fontColor(Color.Red)
    }
  }
}

 

标签:02,ArkTS,Ability,want,EntryAbility1,fontSize,common,Want,myKey
From: https://www.cnblogs.com/xkxf/p/18341556

相关文章

  • 2024牛客暑期多校训练营5
    目录写在前面ELBHKGJ写在最后写在前面比赛地址:https://ac.nowcoder.com/acm/contest/81600。以下按个人难度向排序。妈的坐牢场啊前期除了日常战犯环节嗯吃三发之外顺的一批,后面4h一直在J上坐牢最后样例都没过呃呃呃呃,还剩1.5hdztlb大神说会K了但是以为J能调出来没......
  • 1388、STM32单片机心率(脉搏)MAX30102血氧体温检测阈值报警无线蓝牙远程(程序+原理图+
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图三、原理图四、程序源码五、PCB图六、proteus仿真程序流程图:原理图文字讲解:参考论文:资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩......
  • 2024杭电多校第5场
    (似乎第四场还没补)(没事,问题不大)51002Array-Gift(hdu7482)某种意义上的找规律题?若序列中存在\(a_i=gcd(a_1,a_2,...a_n)\),则显然\(a_i\)为序列中的最小值,可通过\(n-1\)次取模操作,将其他数变成\(0\),由于原序列中\(a>0\),不存在更少的操作次数。若不存在上述\(a_i\),可通......
  • 20240804-谁对谁错已经无所谓了
    麻,很麻。天天跟家长起矛盾,我妈又不听我说话一个劲地输出。我爸也偏袒着我妈,从没说她什么,想来是因为我就是个意外的原因罢,然后他也只是对我说教。为什么呢,我有错吗,有人比我卷就成我的错了,想来是我达不到他们的期望吧。我还不够完美,只能是这样了,因为家里,甚至说家族,只有我这个孩......
  • 【002】Linux配置静态ip地址
    一、环境虚拟机版本:VMwareLinux镜像文件:CentOS-7-x86_64-Minimal-2207-02.iso主机系统:Windows11家庭中文版主机系统类型:64位操作系统,基于x64的处理器远程连接工具:宝塔远程工具二、配置静态ip1、将虚拟机的网络模式设置为NAT模式2、设置VMware的网络模式选择VM......
  • 2024/08/04 每日一题
    LeetCode572另一棵树的子树方法1:DFS+暴力匹配classSolution{publicbooleanisSubtree(TreeNoderoot,TreeNodesubRoot){if(root==null)returnfalse;returnisSameTree(root,subRoot)||isSubtree(root.left,subRoot)||isSubtree(root......
  • ECMAScript 12 (ES12, ES2021) 新特性
    还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。No.内容链接1Openlayers【入门教程】-......
  • 2024.8 做题记录
    1.有依赖的背包问题普及组题现在还不会。。。太有实力辣。2.P6326Shopping题目的要求实质上是要我们选的位置构成一个连通块。可以暴力枚举根做树上依赖背包。优化的方法是点分治,计算经过当前重心的连通块,不经过的可以地柜计算。时间复杂度\(O(nm\logn)\)。3.P3780[SD......
  • 谈一谈编程到底应该怎么学?-暨2023年 CSP-J2轮爆零总结
    谈一谈编程到底应该怎么学?-暨2023年CSP-J2轮爆零总结转自https://mp.weixin.qq.com/s/_Fi64pYrZ6tHfKaNDb3xAA今年的信息学奥赛复赛结果已经基本出来了,整个行业讨论最多的就是今年的爆0问题。据说一个省,总共1900多人参加J组复赛,有800个0分。其它各省也都是爆0很多。但是同......
  • CVE-2023-26469 复现
    题目描述:Jorani是一款开源的员工考勤和休假管理系统,适用于中小型企业和全球化组织,它简化了员工工时记录、休假请求和审批流程,并提供了多语言支持以满足不同地区的需求。在Jorani1.0.0中,攻击者可以利用路径遍历来访问文件并在服务器上执行代码。这是一个csrf的洞,找了一下,......