在HarmonyOS NEXT开发中UIContext获取?

在HarmonyOS NEXT开发中UIContext获取?在入口中获取UIContext上下文时,在启时崩溃(偶发)。是用法不对吗?

阅读 1.2k
1 个回答

loadcontent和getMainWindow两个接口是异步的,getUIContext是同步接口。loadcontent和getMainWindow会同时执行但是回调时序不保证,就会有先getMainWindow拿到结果,但此时content没有完成加载的情况。loadcontent和getMainWindow两个接口是异步的,最好是再Loadcontent的回调中调用接口。保证时序。推荐示例:

onWindowStageCreate(windowStage: window.WindowStage) { 
  // Main window is created, set main page for this ability 
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); 
 
  windowStage.loadContent('pages/Index', (err, data) => { 
    if (err.code) { 
      hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); 
      return; 
    } 
 
    windowStage.getMainWindow((err: BusinessError, data) => { 
      let errCode: number = err.code; 
      if (errCode) { 
        console.error('Failed to obtain the main window.Cause:' + JSON.stringify(err)) 
      } 
      let uiContext = data.getUIContext(); 
      console.log(JSON.stringify(uiContext)) 
    }) 
    hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); 
  }); 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进