a***@dcrab.com
a***@dcrab.com
  • 发布:2024-12-08 16:00
  • 更新:2024-12-08 16:00
  • 阅读:59

【报Bug】鸿蒙小程序SDK 点击胶囊关闭小程序后再次打开会闪退

分类:uni小程序sdk

产品分类: uni小程序SDK

手机系统: 全部

手机厂商: 华为

页面类型: vue

SDK版本号: 2.3.15

测试过的手机:

鸿蒙NEXT版本

示例代码:

这个是EntryAbility中的方法
···
// 可以设置导航栏样式
onWindowStageCreate(windowStage: window.WindowStage): void {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

windowStage_ = windowStage  

init(this, windowStage)  

windowStage.loadContent('pages/login/advertisement', (err) => {  

  //由于时序问题,需要使用setTimeout保证页面压栈的顺序  

  setTimeout(() => {  

    //跳转支付页面  

    this.action()  

  })  

  AppStorage.setOrCreate('windowId', 0)  

  // 我的设置 蛇形图还是树形图  
  PersistentStorage.persistProp('across', false)  
  PersistentStorage.persistProp('size_option', 0)  
  AppStorage.setOrCreate('Fontsize', [12, 14, 16, 18])  

  AppStorage.setOrCreate('CityId', 2500)  

  // 搜索的数据  
  PersistentStorage.persistProp('history_records', [])  

  // 首页推荐优先还是收藏优先 默认推荐  
  PersistentStorage.persistProp('selectedIndex', 0)  

  // 打开获取位置的弹窗  
  reqPermissionsFromUser(this.context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'])  

  let show_gg = (web: status) => {  
    let obj: webDetail = {  
      webUrl: web.msg.split('|')[1]  
    }  
    // 子窗口的逻辑  
    this.showSubWindow(obj)  
  }  

  this.context.eventHub.on('show_web', show_gg)  

  windowStage.getMainWindowSync().setWindowLayoutFullScreen(true) // 同意设置全屏  

  PersistentStorage.persistProp('tip',true)  

  //   添加换乘页面的线路  
  PersistentStorage.persistProp('search_line', [{  
    imag: $r('app.media.search_home'), text: {  
      showText: '回家'  
    }, address: null  
  }, {  
    imag: $r('app.media.search_work'), text: {  
      showText: '上班'  
    }, address: null  
  }])  

});  

// 设置成全屏  
windowStage.getMainWindow((err, windowClass) => {  
  windowClass.setWindowLayoutFullScreen(true)  
  // 隐藏状态栏显示  
  // windowClass.setWindowSystemBarEnable(['navigation'])  

  // 获取顶部状态栏遮挡区域  
  let typeSystem = window.AvoidAreaType.TYPE_SYSTEM;  
  let avoidAreaWindow = windowClass.getWindowAvoidArea(typeSystem);  
  let statusTop = px2vp(avoidAreaWindow.topRect.height); // 获取状态栏的高度  

  // 2. 获取导航条避让遮挡的区域  
  let type = window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR;  
  let avoidArea = windowClass.getWindowAvoidArea(type);  
  let bottomRectHeight = px2vp(avoidArea.bottomRect.height); // 获取到导航条区域的高度  
  AppStorage.setOrCreate('statusTop', statusTop); // 存储状态栏高度  
  AppStorage.setOrCreate('statusBottom', bottomRectHeight); // 存储状导航条区域的高度  
  AppStorage.setOrCreate('BW', 1); // 存储全局UI设置是否黑白  
})  

}
···

操作步骤:

点击胶囊关闭小程序后再次打开会闪退(是整个app都没了不光小程序没了)

预期结果:

正常打开

实际结果:

闪退(是整个app都没了不光小程序没了)

bug描述:

Device info:HUAWEI Mate 60 Pro
Build info:ALN-AL00 5.0.0.112(SP1C00E110R4P22log)
Fingerprint:e5c641e513373774d54da66dbe76f7ab98f61d7e5c7932d19591c881ecdd8d3a
Module name:com.example.application369
Version:1.0.0
VersionCode:1000000
PreInstalled:No
Foreground:Yes
Pid:37722
Uid:20020004
Reason:Error
Error name:Error
Error message:This window state is abnormal.
Error code:
Stacktrace:
at getSafeAreaInsets (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.15/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:1125:1)
at aboutToAppear (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.15/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/components/Capsule.ets:127:44)

2024-12-08 16:00 负责人:无 分享
已邀请:

要回复问题请先登录注册