同一个应用多个ability的情况下,后台ability页面跳转

同一个应用多个ability的情况下,abilityB在前台时,让后台abilityB中页面关闭或者跳转。


HarmonyOS
2024-05-26 14:37:13
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
youganlan

在abilityA中订阅事件,在abilityB中触发指定事件,因为不同的context对象有用不同的eventhub对象,所以这里选择ApplicationContext,来保证订阅触发都在同一个eventhub对象上。

这里的router得通过abilityA的uiContext来获取,来保证页面的跳转是在abilityA上,如果直接用router跳转,那么要转页面会展示到前台ability上。

//EntryAbility.ets 
​ 
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 
​ 
  let eventhub = this.context.getApplicationContext().eventHub; 
​ 
  //订阅,实现销毁跳转 
  eventhub.on('event1', () => { 
    let uiContext = AppStorage.get('uiContext') as UIContext 
    let router = uiContext.getRouter(); 
    router.replaceUrl({ 
      url: 'pages/Page1', 
    }) 
   }); 
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); 
} 
  
//Page2.ets 
​ 
build() { 
  Row() { 
    Column() { 
      Text(this.message) 
        .fontSize(50) 
        .fontWeight(FontWeight.Bold) 
      Button() { 
        Text('发') 
          .fontSize(30) 
          .fontWeight(FontWeight.Bold) 
      } 
      .type(ButtonType.Capsule) 
      .margin({ 
        top: 20 
      }) 
      .backgroundColor('#0D9FFB') 
      .width('40%') 
      .height('5%') 
      .onClick(() => { 
        this.context.getApplicationContext().eventHub.emit('event1'); 
​ 
      }) 
    } 
    .width('100%') 
  } 
  .height('100%') 
}

分享
微博
QQ
微信
回复
2024-05-27 19:48:22
相关问题
HarmonyOS 多module同时依赖同一个har
573浏览 • 1回复 待解决