当前位置:   article > 正文

HarmanyOS-Stage模型-UIAbility的启动模式

HarmanyOS-Stage模型-UIAbility的启动模式

四种模式

修改方式:entry abilitymodule.json5文件中添加或修改这句话

  1. //Singleton模式:每一个UIAbility只存在唯一实例,是默认实例,任务列表中只有一个。
  2. "launchType":"Singleton",
  3. //multiton模式:每次启动UIAbility都会创建一个新的实例,任务列表中只有一个。
  4. "launchType":"multiton",
  5. //standard模式:每次启动UIAbility都会创建一个新的实例,任务列表中存在一个或者多个。
  6. "launchType":"standard",
  7. //specified模式:每个UIAbility可以设置key标示,启动UIAbility时,需要指定key,存在key相同实例直接被拉起,不存在则创建新实例
  8. "launchType":"specified",

实现UIAbility specified启动方式的步骤

  1. 在ets目录下创建新的Ability,这里默认为DocumentAbility
  2. 修改DocumentAbility中windowStage.loadContent的启动指定的默认窗口为DocumentPage
  3. 在module.json5中的找到DocumentAbility添加"launchType":"specified"
  4. 配置完成后进入功能开发代码中
    1. //1.准备一个context
    2. private context = getContext(this) as common.UIAbilityContext
    3. //2.跳转的目的地want
    4. let want: Want = {
    5. deviceId: '', //空表示当前应用
    6. bundleName: 'com.example.myapplication',//在app.json5中
    7. moduleName: 'entry', //模块名
    8. abilityName: 'DocumentAbility', //跳转的目的Ability名
    9. parameters: {
    10. instanceKey: 'idx_' + this.index++ //设置唯一的key
    11. }
    12. }
    13. //3.跳转
    14. this.context.startAbility(want)
  5. 设置Ability舞台,在ets下创建新的文件夹如myabilitystage,并在myabilitystage下创建一个ts文件如MyAbilityStage.ts
    1. import AbilityStage from '@ohos.app.ability.AbilityStage';
    2. import Want from '@ohos.app.ability.Want';
    3. export default class MyAbilityStage extends AbilityStage{
    4. onAcceptWant(want:Want):string {
    5. if(want.abilityName === 'DocumentAbility'){
    6. return `DocAbilityInstanse_${want.parameters.instanceKey}`
    7. }
    8. return ''
    9. }
    10. }
  6. 在module.json5下配置srcEntry
    1. //一般在"name": "entry","type": "entry",下面配置
    2. "srcEntry": './ets/myabilitystage/MyAbilityStage.ts',
  7. DocumentPage下编写返回DocumentListPage的代码
    1. //1.获取context
    2. private context = getContext(this) as common.UIAbilityContext
    3. //2.跳转到文档列表的 UIAbility
    4. let want: Want = {
    5. deviceId: '',
    6. bundleName: 'com.example.myapplication',
    7. moduleName: 'entry',
    8. abilityName: 'EntryAbility'
    9. //因为跳回去的EntryAbility是单实例模式,所以不需要指定key
    10. }
    11. //3.跳转
    12. this.context.startAbility(want)

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/228807?site
推荐阅读
相关标签
  

闽ICP备14008679号