uni-app 关闭后台模式特定情况下宿主activity无法打开的问题

uni-app 关闭后台模式特定情况下宿主activity无法打开的问题 产品分类:uni小程序SDK 手机系统:Android 手机系统版本号:Android 11 手机厂商:OPPO 手机机型:K7x 页面类型:nvue SDK版本号:3.3.8

操作步骤:

登录app打开小程序,重复多次,再退出登录更换另一个账号登录,打开小程序,宿主activity无法启动

预期结果:

宿主activity能正常启动

实际结果:

宿主activity未能正常启动

bug描述:

关闭后台模式,在更换启动参数后有一定的概率会触发所有小程序都无法打开的问题(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  

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

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

更多关于uni-app 关闭后台模式特定情况下宿主activity无法打开的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

1 小程序实例是多进程必然使用缓存的。 2 后台模式只能决定了每个小程序实例 是否出现在最近任务中。

更多关于uni-app 关闭后台模式特定情况下宿主activity无法打开的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


目前我猜测是否因为我们这边退出登录后finish home的原因,导致第一次缓存的cotext失效,从而发生宿主activity不能打开的问题。如果是这样能否内部处理,或者说在文档做一定的说明这种情况下closeUniMP的作用(因为目前的解决方案就是非业务的)。如果是内部能处理更好,升级sdk版本即可。

回复 skipper92: 你们期望 宿主销毁的时候,该宿主缓存的进程示例也销毁是吗

需要提供一个 可以复现问题的示例。 我没法定位问题。

登录信息是存在sp里面的

回到顶部