uni-app 安卓小程序sdk启动第二个小程序卡死

uni-app 安卓小程序sdk启动第二个小程序卡死

操作步骤:

1、先启动一个小程序,小程序不关闭,再通过DCUniMPSDK.getInstance().startApp 启动另一个小程序,第二个小程序卡死无法点击。 2、先启动一个小程序,通过DCUniMPSDK.getInstance().closeCurrentApp()关闭小程序,再通过DCUniMPSDK.getInstance().startApp 启动另一个小程序,第二个小程序卡死无法点击。

预期结果:

第二个小程序能点击

实际结果:

卡死,无法点击

bug描述:

下面两种情况都会卡死 1、先启动一个小程序,小程序不关闭,再通过DCUniMPSDK.getInstance().startApp 启动另一个小程序,第二个小程序卡死无法点击。 2、先启动一个小程序,通过DCUniMPSDK.getInstance().closeCurrentApp()关闭小程序,再通过DCUniMPSDK.getInstance().startApp 启动另一个小程序,第二个小程序卡死无法点击。


更多关于uni-app 安卓小程序sdk启动第二个小程序卡死的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

用unimpdemo测试看看是否存在该问题 我们用unimpdemo自带的两个应用切换启动测试没有发现问题

更多关于uni-app 安卓小程序sdk启动第二个小程序卡死的实战教程也可以访问 https://www.itying.com/category-93-b0.html


demo里是直接调DCUniMPSDK.getInstance().startApp启动没问题。在releaseWgtToRunPathFromePath的回调里打开第二个轻应用会卡死,上传了个代码,在demo基础上改的,点击第一个列表的数据会打开第二个应用

回复 4***@qq.com: 先关闭小程序 在UniMPOnCloseCallBack监听后再打开小程序

这是一个已知的uni-app安卓小程序SDK的并发启动问题。根据你的描述,问题出在小程序实例的切换处理上。

核心原因分析:

  1. 当第一个小程序未完全释放资源时,直接启动第二个小程序会导致线程冲突
  2. closeCurrentApp()方法可能没有完全清理前一个实例的上下文环境

建议解决方案:

  1. 确保在启动新小程序前添加适当的延迟(建议300-500ms)
  2. 检查小程序的生命周期回调,确保onDestroy完全执行
  3. 在调用startApp前先调用DCUniMPSDK.getInstance().release()释放资源

代码示例:

// 关闭当前小程序
DCUniMPSDK.getInstance().closeCurrentApp(new DCUniMPSDK.ICallBack() {
    @Override
    public void onCallBack() {
        // 添加延迟
        new Handler().postDelayed(() -> {
            // 启动新小程序
            DCUniMPSDK.getInstance().startApp(activity, appid, splashClass);
        }, 300);
    }
});
回到顶部