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

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

HarmonyOS
1天前
浏览
收藏 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)}`);
}
})
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 如何统计应用启动耗时
598浏览 • 1回复 待解决
HarmonyOS OAID弹窗无法展示
16浏览 • 1回复 待解决
"NAPI通信耗时长"导致丢帧分析
964浏览 • 1回复 待解决
HarmonyOS 如何获取oaid
246浏览 • 1回复 待解决
HarmonyOS OAID获取失败
290浏览 • 2回复 待解决
应用事件打点-统计某个页面浏览时长
1055浏览 • 1回复 待解决
HarmonyOS 应用卡顿时长检测如何实现
190浏览 • 1回复 待解决
HarmonyOS 统计页面停留时长
156浏览 • 1回复 待解决
HarmonyOS webview内存占用问题
129浏览 • 1回复 待解决
HarmonyOS gpu占用过高
19浏览 • 1回复 待解决
HarmonyOS 获取的oaid都是0
1112浏览 • 1回复 待解决
如何获取获取OAID信息
821浏览 • 1回复 待解决
OAID授权问题有哪些?
655浏览 • 1回复 待解决
获取应用的CPU使用率和内存占用
414浏览 • 1回复 待解决
应用在CPU的占用情况如何线上分析
1622浏览 • 1回复 待解决
HarmonyOS上如何正确的获取OAID
106浏览 • 1回复 待解决