HarmonyOS 应用启动OAID弹窗占用耗时长

应用启动时,OAID授权requestPermissionsFromUser阻塞主线程1s

HarmonyOS
2025-01-09 16:03:09
703浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

UIExtensionAbility依赖窗口创建加载content,需要在onWindowStageCreate生命周期中windowStage.loadContent函数执行结束后才能正常获取,否则会弹窗失

1、在onCreate或onWindowStageCreate中调用requestPermissionsFromUser接口

2、在requestPermissionsFromUser接口中存在耗时操作

3、在loadContent执行前/执行中有同步等待的操作

以上均可能影响弹窗流程。

适配方法:

由于windowStage.loadContent为异步函数,建议应用(XTS)整改应用代码

建议改为在loadContent函数回调中执行requestPermissionsFromUser,且过程中不要进行长耗时、长等待等操作;

onWindowStageCreate(windowStage: window.WindowStage): void {
  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;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
try {
  atManager.requestPermissionsFromUser(this.context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'], (err: BusinessError, data: PermissionRequestResult)=>{
    console.info('data:' + JSON.stringify(data));
    console.info('data permissions:' + data.permissions);
    console.info('data authResults:' + data.authResults);
  });
} catch(err) {
  console.log(`catch err->${JSON.stringify(err)}`);
}
})
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
分享
微博
QQ
微信
回复
2025-01-09 17:48:28


相关问题
HarmonyOS 如何统计应用启动耗时
1039浏览 • 1回复 待解决
HarmonyOS OAID弹窗无法展示
363浏览 • 1回复 待解决
"NAPI通信耗时长"导致丢帧分析
1505浏览 • 1回复 待解决
HarmonyOS 应用卡顿时长检测如何实现
692浏览 • 1回复 待解决
HarmonyOS 如何获取oaid
560浏览 • 1回复 待解决
HarmonyOS OAID获取失败
1239浏览 • 2回复 待解决
应用事件打点-统计某个页面浏览时长
1556浏览 • 1回复 待解决
HarmonyOS 获取的oaid都是0
1778浏览 • 1回复 待解决
HarmonyOS 统计页面停留时长
504浏览 • 1回复 待解决
HarmonyOS 应用弹窗实现
862浏览 • 1回复 待解决
HarmonyOS上如何正确的获取OAID
543浏览 • 1回复 待解决
OAID授权问题有哪些?
1353浏览 • 1回复 待解决
如何获取获取OAID信息
1375浏览 • 1回复 待解决