raise
raise
  • 发布:2019-11-12 21:39
  • 更新:2020-05-29 11:08
  • 阅读:1593

【报Bug】uni.getSystemInfo 获取屏幕的高有获取错的情况。我把获取屏幕高放到组件就出现了。多次测试多个设计都出现

分类:nvue

纯 nvue项目(uniapp模式)。编辑器版本 2.4.0.20191112-alpha

uni.getSystemInfo 获取屏幕的高有获取错的情况。我把获取屏幕高放到组件就出现了。多次测试多个设计都出现

我上传了完整demo代码,请管理员下载执行看看。console.log 会把数据打印出来, at components/myList/myList.js:36

【ios正常】【安卓不行】

多运行,或者打开几次会得到不一样的结果

小米MI 8 第一种结果
{
"errMsg": "getSystemInfo:ok",
"brand": "Xiaomi",
"model": "MI 8",
"pixelRatio": 2.75,
"screenWidth": 392,
"screenHeight": 817,
"windowWidth": 392,
"windowHeight": 817,
"statusBarHeight": 32,
"language": "zh",
"system": "9",
"version": "1.9.9.70959",
"fontSizeSetting": "",
"platform": "android",
"SDKVersion": "",
"windowTop": 0,
"windowBottom": 0,
"safeArea": {
"left": 0,
"right": 392,
"top": 32,
"bottom": 817,
"width": 392,
"height": 785
}
}

小米MI 8 第二种结果
{
"errMsg": "getSystemInfo:ok",
"brand": "Xiaomi",
"model": "MI 8",
"pixelRatio": 2.75,
"screenWidth": 392,
"screenHeight": 817,
"windowWidth": 392,
"windowHeight": 741,
"statusBarHeight": 32,
"language": "zh",
"system": "9",
"version": "1.9.9.70959",
"fontSizeSetting": "",
"platform": "android",
"SDKVersion": "",
"windowTop": 0,
"windowBottom": 0,
"safeArea": {
"left": 0,
"right": 392,
"top": 0,
"bottom": 741,
"width": 392,
"height": 741
}
}

oppo R11 第一种结果
{
"errMsg": "getSystemInfo:ok",
"brand": "OPPO",
"model": "oppo R11",
"pixelRatio": 2,
"screenWidth": 405,
"screenHeight": 720,
"windowWidth": 405,
"windowHeight": 720,
"statusBarHeight": 24,
"language": "zh",
"system": "6.0.1",
"version": "1.9.9.70959",
"fontSizeSetting": "",
"platform": "android",
"SDKVersion": "",
"windowTop": 0,
"windowBottom": 0,
"safeArea": {
"left": 0,
"right": 405,
"top": 24,
"bottom": 720,
"width": 405,
"height": 696
}
}
oppo R11 第二种结果
{
"errMsg": "getSystemInfo:ok",
"brand": "OPPO",
"model": "oppo R11",
"pixelRatio": 2,
"screenWidth": 405,
"screenHeight": 720,
"windowWidth": 405,
"windowHeight": 652,
"statusBarHeight": 24,
"language": "zh",
"system": "6.0.1",
"version": "1.9.9.70959",
"fontSizeSetting": "",
"platform": "android",
"SDKVersion": "",
"windowTop": 0,
"windowBottom": 0,
"safeArea": {
"left": 0,
"right": 405,
"top": 0,
"bottom": 652,
"width": 405,
"height": 652
}
}

2019-11-12 21:39 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

没能复现出来,但是猜测可能是时机问题。临时解决方法:在mounted内获取时延迟一下

  • raise (作者)

    会不会你们的安卓手机性能都太好。我用mumu(模拟器)和小米8手机(真机)都可以复现

    2019-11-13 16:19

  • DCloud_uniCloud_WYQ

    回复 raise: 加了延迟之后正常不

    2019-11-13 17:21

  • raise (作者)

    回复 DCloud_uniCloud_WYQ: 果然时机问题。这样算bug吗?越差性能到安卓手机时机就越晚。延迟多少毫秒合适不好把我。


    怀念mui时代到 ready事件。个人认为video组件和其他比较重到组件都需要ready时间感觉。


    比如video差的时机还没ready好就直接触发播放事件就会死机白屏等【曾尝试自己封装安卓的video播放器组件就可以避免差的安卓手机做视频播放功能崩溃】。目前我的仿抖音的app性能使用起来非常好,就是差一点的安卓手机会开机的时候死机白屏等问题出现。

    2019-11-13 22:41

  • raise (作者)

    回复 DCloud_uniCloud_WYQ: 那就是确实存在bug部分机型组件内mounted时机 无法正确uni.getSystemInfo 获取屏幕的高

    2019-11-14 13:46

  • DCloud_uniCloud_WYQ

    回复 raise: 修复已经在计划中了,感谢关注

    2019-11-14 15:13

  • raise (作者)

    回复 DCloud_uniCloud_WYQ: 请点一下【bug已确认】给我加分嘻嘻。

    2019-11-14 15:43

  • DCloud_uniCloud_WYQ

    回复 raise: BUG还没复现出来,先给你加个分

    2019-11-14 16:56

风云杭州

风云杭州

用 uni.getSystemInfoSync() 同步的方式获取应该就可以避免这个问题了吧?

请教下 窗口高度和屏幕 高度有啥区别呀

该问题目前已经被锁定, 无法添加新回复