skipper92
skipper92
  • 发布:2022-01-20 12:00
  • 更新:2022-03-07 18:23
  • 阅读:943

【报Bug】splashview 热启动未触发导致闪屏,以及后台模式下setUniMPFromRecents(false)白屏等多种问题

分类:uni小程序sdk

产品分类: uni小程序SDK

手机系统: Android

手机系统版本号: Android 11

手机厂商: OPPO

手机机型: k7x

页面类型: nvue

SDK版本号: 3.3.8 v2

操作步骤:

如上

预期结果:

至少保证一种模式下没有任何问题

实际结果:

目前升级v2后在后台模式,非后台模式都有不少问题,就目前看下来后台多窗比较稳定(但是有闪屏问题splashview 冷启动未生效)

bug描述:

1.开启后台模式后,IDCUniMPAppSplashView 在缓存状态下启动不生效。第一次启动能看到splashview,一旦热启动就看不到了,这时会出现闪屏效果
2.开启后台模式并关闭多窗口显示策略,反复打开多个uniapp 项目,会偶发某一个的白屏问题(重复5+次,每次打开不同的uniapp)

  1. 关闭后台模式,在更换启动参数后有一定的概率会触发所有小程序都无法打开的问题(jsonobject 结构没有变化,只是改了值例如token等),没有任何错误信息,确认如下代码一定被执行
    val uniMpOpenConfig = UniMPOpenConfiguration()  
        uniMpOpenConfig.splashClass = UniAppSplashView::class.java  
        uniMpOpenConfig.redirectPath = redirectPath  
        uniMpOpenConfig.extraData = jsonObject  
        val unImp = SoftReference(  
            DCUniMPSDK.getInstance().openUniMP(  
                context,  
                appId,  
                uniMpOpenConfig  
            )  
        )  
        mUniMPCaches[appId] = unImp  
        currentAppId = appId
2022-01-20 12:00 负责人:DCloud_Android_DQQ 分享
已邀请:
skipper92

skipper92 (作者)

DEMO 工程反复点击也会复现白屏问题。有没有人跟进一下这三个问题呢,准备节后上线更换v2版本sdk的新版本app,可是目前这些问题严重影响上线了。

DCloud_Android_ST

DCloud_Android_ST

文档有说明的 openUniMP的splashClass参数: 自定义splashView接口类,再次启动已启动的小程序该参数失效 文档链接

  • skipper92 (作者)

    哦,看到了,那有没有可能通过其他手段避免这种问题呢,目前来说二次打开闪屏效果对用户体验极不友好。我理解是前端代码渲染的过程产生的闪屏。这块有没有类似webview的progress监听处理方案呢

    2022-01-21 15:17

  • skipper92 (作者)

    其次白屏的问题复现率太高了,特别的打开后台关闭多窗口的模式下。今天又试了试打开多窗口的时候也有小几率出现。

    2022-01-21 15:18

  • skipper92 (作者)

    使用的demo工程测试

    2022-01-21 15:18

  • DCloud_Android_ST

    回复 skipper92: 你可以录个视频看下

    2022-01-21 15:22

  • skipper92 (作者)

    回复 DCloud_Android_ST: 上传了你看看,另外一个关闭后台情况下的问题,在demo不好复现,我们自身应用是退出登录,再登录后,调用openunimp app无任何反应,也没有任何报错信息,简单说就是连小程序都没启动起来。

    2022-01-21 15:47

  • skipper92 (作者)

    目前期望就是至少一种模式下没有体验问题。预期的是希望后台单窗口模式下能正常使用

    2022-01-21 15:48

  • skipper92 (作者)

    白屏的情况是小程序的宿主activity启动起来了,splashview也出来了,但是不渲染。自从升级v2后就发现了这些问题,之前v1的版本有小概率会出现不渲染的问题,但是打开uniapp速度不稳定,升级v2后打开速度确实稳定了整体体验上升不少,但是目前就是在反复使用的场景下有上面整理的问题,这个确实影响上线了。

    2022-01-21 15:51

  • skipper92 (作者)

    回复 DCloud_Android_ST: 能否对最下面新补充的问题做一个答疑呢

    2022-01-24 11:05

  • DCloud_Android_ST

    回复 skipper92: 概率性不渲染的问题已有同学在跟踪了 请耐心等待

    2022-01-24 11:07

  • skipper92 (作者)

    回复 DCloud_Android_ST: 不是,我下面新增了一个评论,有关关闭后台模式后,宿主activity不能启动的问题,并且解决了,但是有个疑惑

    2022-01-24 11:09

  • DCloud_Android_ST

    回复 skipper92: 有新的问题开新帖 要不在一个帖子里咨询过多

    2022-01-24 11:11

  • skipper92 (作者)

    回复 DCloud_Android_ST: 是我这个帖子里面三个问题中的一个,这样我重新开一个针对关闭后台模式下的帖子

    2022-01-24 11:13

skipper92

skipper92 (作者)

这个是后台关闭多窗口模式情况下的录屏,越到后面打开的白屏次数越多。测试方法就是反复换着打开小程序

skipper92

skipper92 (作者)

补充上述一个问题的修复方案:
1.关闭后台模式,在更换启动参数后有一定的概率会触发所有小程序都无法打开的问题(jsonobject 结构没有变化,只是改了值例如token等),没有任何错误信息,确认如下代码一定被执行
这个问题目前已经修复了,修复记录:我们app是需要登录才能进首页的,首页是原生开发,首页上的子模块大部分是小程序。之前复现就是第一次登录到首页,打开小程序多个正常。然后退出登录再换别的账号登录后就会复现问题。起初怀疑是不是透传参数中token值发生改变导致,通过验证排除。之后在思考目前多进程方案应该配合有一定的缓存策略,是否因为缓存问题导致(因为问题复现后没有任何错误提示,只是点击后宿主activity没有启动)。再次查询api,找到closeUniMP,首先猜测closeUniMP应该伴随着缓存的清理,那么后续就在退出登录后配合自身业务调用如下代码:

fun closeAllUniApp() {  
        mUniMPCaches.forEach { it.value.closeUniMP() }  
    }

问题得到解决。之后反复更换账号登录,问题没有再次出现。
但是这里有个问题就很疑惑,以至于之前我们这边根本没往这个方向考虑,既然是关闭后台的模式,为什么在小程序退出的时候没有清理干净,而后需要调用closeunimp

DCloud_Android_DQQ

DCloud_Android_DQQ

1  开启后台模式后,IDCUniMPAppSplashView 在缓存状态下启动不生效。第一次启动能看到splashview,一旦热启动就看不到了,这时会出现闪屏效果

这个问题已确认,稍后版本会修复

DCloud_Android_DQQ

DCloud_Android_DQQ

第二 第三个 问题 需要提供一下 可以复现问题的示例。我这边没法复现

DCloud_Android_DQQ

DCloud_Android_DQQ

demo 自带示例白屏的问题,也已经找到并修复。 稍后版本会修复

DCloud_UNI_Anne

DCloud_UNI_Anne

HBuilderX alpha 3.4.0+ 已修复

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