1***@qq.com
1***@qq.com
  • 发布:2024-07-22 15:26
  • 更新:2024-12-23 15:08
  • 阅读:542

【报Bug】uniapp IOS 退出后台挂了快一个小时 在进入APP后部分图片变成空白了

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win11

HBuilderX类型: 正式

HBuilderX版本号: 4.17

手机系统: iOS

手机系统版本号: iOS 17

手机厂商: 苹果

手机机型: iPhone15 Pro

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

APP挂在后台后,10分钟、半分钟返回APP图片都没有问题,过了快一个小时后进入APP后大部分图片资源都缺失了变空白了

预期结果:

图片资源不会消失白屏

实际结果:

图片变成空白了

bug描述:

uniapp IOS 退出后台挂了快一个小时 在进入APP后部分图片变成空白了

2024-07-22 15:26 负责人:DCloud_iOS_XHY 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

急,有人知道这是什么原因吗?

DCloud_iOS_XHY

DCloud_iOS_XHY

是只有图片变空白了,页面其他内容还有吗?还是整个页面都空白了?

  • 1***@qq.com (作者)

    对,其他内容都有。能够看到我上传的压缩包文件吗?里面有视频。

    2024-07-22 20:38

  • xuhao

    我这里不只是图片,页面的样式也会失效

    2024-11-22 11:40

Big_Shark

Big_Shark

楼主方便的话,加个QQ讨论一下。

  • 1***@qq.com (作者)

    可以的,1213563369

    2024-07-22 20:38

  • Big_Shark

    回复 1***@qq.com: 好的。

    2024-07-22 21:14

AppleDev

AppleDev

你好 这种情况可能是由于内存或资源不足导致的图片加载问题。你可以尝试在进入APP后重新加载这些空白图片,或者检查一下你的图片资源是否被释放或清除了

  • 1***@qq.com (作者)

    你好,我也考虑过是这个问题,我应该怎么做能去检查图片资源是否被释放或者是清除呢?

    2024-07-23 09:22

DCloud_iOS_XHY

DCloud_iOS_XHY

这个问题基本确定就是内存使用过大时系统会将处于后台中的 webview 进程终止,回到前台后uniapp做了webview白屏恢复的机制,但是不能保证所有内容都能正常恢复,可以加个逻辑判断一下 image 组件的 src 是否存在,是否能正常获取图片的size,如果不能正常获取就直接刷新一下当前页面试试看

  • 1***@qq.com (作者)

    好滴,感谢

    2024-07-23 14:37

  • 1***@163.com

    全部都是白屏 怎么解决呢

    2024-09-06 09:21

  • aelvetz

    回复 1***@qq.com: 解决了么,大佬?

    2024-11-14 16:34

aelvetz

aelvetz - 一个全淦开发者

同问什么问题。
坑的一批,现在公司的uni-app项目,要么不出问题,出问题基本就是类似这种大坑问题,烦的要死。
只能等官方回答。
难顶

  • 1***@qq.com (作者)

    你用的是原生的image组件,还是用的组件库的图片组件?

    2024-11-14 16:57

  • aelvetz

    回复 1***@qq.com: 都试过,都不行

    2024-11-14 17:14

xuhao

xuhao

不仅是图片,在ios端页面的样式app在后台运行一段时间以后从新进入也会失效

d***@163.com

d***@163.com

同问,后台挂起几个小时后,首页商品的图片都消失了。

d***@163.com

d***@163.com

目前通过以下兼容方案,处理了页面 图片或样式消失的问题。测试有效。

// app.vue  
 onHide() {  
            console.log("App Hide");  
            useAppStore().setHide(true)  

        },  
        async onShow() {  
            // 获取当前页面路由  
            let page = currentPage()  
            let route = page['__route__']  
            // 判断页面是否是通过后台进入,并且是ios平台  
            if(useAppStore().isHide?.val && $platform.os == 'ios') {  
                let hideTime = useAppStore().isHide?.time  
                // 页面隐藏30分钟内,不重新加载,时间是随意加的,ios预计是2小时左右会显示不出来图片  
                if(Date.now() - hideTime < 30 * 60 * 1000) {  
                    return  
                }  
                useAppStore().setHide(false)  
                let nav_type = route == 'page/index/index' ? 'reLaunch' : 'redirectTo'  
                navigateTo({path: `/${route}`}, nav_type)  
            }  
        },

要回复问题请先登录注册