uni-app 小程序一直开启后推到后台,再拉回前台就闪退

uni-app 小程序一直开启后推到后台,再拉回前台就闪退

项目属性
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 14
手机厂商 小米
手机机型 小米14pro
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

操作步骤:

复现步骤:小米手机pro安装隆基渠道商APP,登录成功后,将该应用退到手机后台,不杀掉进程,等半天的时间,然后再次点击这个app,会提示闪退的提醒。

预期结果:

不应该闪退。

实际结果:

闪退

bug描述:

问题描述:小米手机pro安装隆基渠道商APP,登录成功后,将该应用退到手机后台,不杀掉进程,等半天的时间,然后再次点击这个app,会提示闪退的提醒。 报错日志如下:

java.lang.UnsatisfiedLinkError: No implementation found for void com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(java.lang.Object, java.lang.String) (tried Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge and Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge__Ljava_lang_Object_2Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
at com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(Native Method)
at com.taobao.weex.bridge.WXBridge.resetWXBridge(WXBridge.java:2)
at com.taobao.weex.bridge.WXBridgeManager.restart(WXBridgeManager.java:4)
at com.taobao.weex.WXSDKEngine.restartWeex(WXSDKEngine.java:2)
at io.dcloud.feature.weex.WeexInstanceMgr.loadWeexToAppid(WeexInstanceMgr.java:7)
at io.dcloud.feature.sdk.DCUniMPActivity.onCreate(Unknown Source:25)
at android.app.Activity.performCreate(Activity.java:8891)
at android.app.Activity.performCreate(Activity.java:8856)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1468)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3953)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4124)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:99)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2572)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:224)
at android.os.Looper.loop(Looper.java:318)
at android.app.ActivityThread.main(ActivityThread.java:8669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)  

更多关于uni-app 小程序一直开启后推到后台,再拉回前台就闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

19 回复

HBuilderX 4.16.2024051009-alpha 已修复。

更多关于uni-app 小程序一直开启后推到后台,再拉回前台就闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni小程序sdk啥时候发布?

更新日志没有提到修复这个bug

4.16.2024051009-alpha 修复 语言服务 uni-app项目中使用"@/"形式的绝对路径时,没有代码提示和语法校验报错的Bug 详情 修复 语言服务 文件删除后,该文件中定义的符号信息在某些情况下仍旧提示的Bug 详情 修复 语言服务 vue内置指令v-bind不提示已经存在的属性的Bug 详情 优化 语言服务 uni ext api代码提示性能 优化 语言服务 uni-app x项目 错误校验性能 修复 语言服务 uni-app x项目 某些情况下,查找引用结果重复的Bug 详情 修复 语言服务 uni-app x项目 pages.json文件中条件编译指定多平台时,语言服务只在单平台生效的Bug 详情 修复 语言服务 uni-app x项目 instanceof关键字后面无法提示interface或type类型的Bug 详情 修复 uni-app x项目 manifest.json Android启动界面设置,当splash图为相对路径时提交云端打包后图片资源丢失的Bug 详情 修复 uni-app x项目 运行控制台,某些情况下输出的日志颜色错误的Bug

为什么这个报错是通过hbuild的升级来更新的

日志追加如下: No implementation found for void com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(java.lang.Object, java.lang.String) (tried Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge and Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge__Ljava_lang_Object_2Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
解析原始 1 com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(Native Method) 2 com.taobao.weex.bridge.WXBridge.resetWXBridge(WXBridge.java:2) 3 com.taobao.weex.bridge.WXBridgeManager.restart(WXBridgeManager.java:4) 4 com.taobao.weex.WXSDKEngine.restartWeex(WXSDKEngine.java:2) 5 io.dcloud.feature.weex.WeexInstanceMgr.loadWeexToAppid(WeexInstanceMgr.java:7) 6 io.dcloud.feature.sdk.DCUniMPActivity.onCreate(Unknown Source:25) 7 android.app.Activity.performCreate(Activity.java:8891) 8 android.app.Activity.performCreate(Activity.java:8856) 9 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1468) 10 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3965) 11 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4136) 12 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 13 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 14 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:99) 15 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2581) 16 android.os.Handler.dispatchMessage(Handler.java:106) 17 android.os.Looper.loopOnce(Looper.java:224) 18 android.os.Looper.loop(Looper.java:318) 19 android.app.ActivityThread.main(ActivityThread.java:8720) 20 java.lang.reflect.Method.invoke(Native Method) 21 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561) 22 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)

小程序SDK不支持单进程或与宿主统一进程。有类似需求可以使用APP离线打包SDK

没有解决哦

没有解决咋办呢

回复 2***@qq.com: 不能与宿主同一个进程 目前是你们修改了SDK配置项,导致sdk出现异常,需要恢复原有配置,或使用APP离线打包SDK

回复 DCloud_Android_ST: 这个不能优化吗?都已经用了uni小程序了,还怎么离线打包

回复 DCloud_Android_ST: 意思就是我打开了小程序放在那不动,过一会就提示提示闪退吗,这体验不太好吧,小米手机一直频繁提示用户闪退,人家还以为我们的App有Bug

bug已确认

使用SDK-Android@4.15-20240606 更新后,应用退到后台,等个十几分钟,uni进程DEAD,再点app,uni进程恢复,但此时整个app白屏,提示为app没有响应, 日志报错为:No implementation found for void com.taobao.weex.bridge.WXBridge.nativeResetWXBridge,这是什么情况呢

app切到后台,小程序进程一旦被系统回收(杀掉),重新打开app必定报错,主进程还没被回收。

app切到后台,小程序进程一旦被系统回收(杀掉),重新打开app必定报错,主进程还没被回收。 FATAL EXCEPTION: main (Ask Gemini)
Process: com.yidont.unimp.modules.demo:unimp0, PID: 5795
java.lang.UnsatisfiedLinkError: No implementation found for void com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(java.lang.Object, java.lang.String) (tried Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge and Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge__Ljava_lang_Object_2Ljava_lang_String_2) - is the library loaded, e.g. System.loadLibrary?
at com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(Native Method)
at com.taobao.weex.bridge.WXBridge.resetWXBridge(Unknown Source:16)
at com.taobao.weex.bridge.WXBridgeManager.restart(Unknown Source:16)
at com.taobao.weex.WXSDKEngine.restartWeex(Unknown Source:8)
at io.dcloud.feature.weex.WeexInstanceMgr.loadWeexToAppid(Unknown Source:33)
at io.dcloud.feature.sdk.DCUniMPActivity.onCreate(Unknown Source:38)
at android.app.Activity.performCreate(Activity.java:8891)
at android.app.Activity.performCreate(Activity.java:8856)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1471)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3973)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4144)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:99)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:224)
at android.os.Looper.loop(Looper.java:318)
at android.app.ActivityThread.main(ActivityThread.java:8770)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)

怎么设置小程序logo图标?,默认是宿主AppLogo,,还有怎么获取到小程序名称和logo

在 uni-app 开发的小程序中,如果遇到小程序从后台拉回前台时闪退的问题,可能是由于以下几种原因导致的。以下是一些可能的解决方案:

1. 内存泄漏

  • 问题描述:小程序在后台运行时,如果内存占用过高,当重新回到前台时,可能会因为内存不足而闪退。
  • 解决方案:检查代码,确保没有内存泄漏的情况。特别是定时器、事件监听器等资源的清理。

2. 页面生命周期管理不当

  • 问题描述:在小程序切换到后台时,页面生命周期管理不当可能导致页面状态丢失或异常。
  • 解决方案:确保在 onHideonShow 生命周期中正确处理页面状态。例如,在 onHide 中保存页面状态,在 onShow 中恢复页面状态。

3. 小程序后台运行时间过长

  • 问题描述:小程序在后台运行时间过长,可能会导致资源被回收,重新回到前台时闪退。
  • 解决方案:尽量减少小程序在后台的运行时间,确保在 onHide 中释放不必要的资源。

4. 小程序版本问题

  • 问题描述:可能是小程序基础库版本问题,或者 uni-app 框架本身的 bug。
  • 解决方案:确保使用最新版本的 uni-app 和小程序基础库。可以在 manifest.json 中指定基础库的最低版本。

5. 网络请求未处理

  • 问题描述:如果小程序在后台时还有未完成的网络请求,可能会导致重新回到前台时闪退。
  • 解决方案:在 onHide 中取消未完成的网络请求。

6. 小程序缓存问题

  • 问题描述:小程序缓存可能导致数据不一致或异常,从而导致闪退。
  • 解决方案:清理小程序缓存,或者在代码中合理处理缓存数据。

7. 调试工具问题

  • 问题描述:有时候调试工具本身的问题可能导致闪退。
  • 解决方案:尝试在不同的设备或不同的调试工具中复现问题。

8. 代码逻辑问题

  • 问题描述:某些代码逻辑可能在特定情况下导致闪退。
  • 解决方案:仔细检查代码,特别是与页面生命周期相关的逻辑。

9. 使用 wx.getBackgroundAudioManagerwx.getBackgroundFetchData

  • 问题描述:如果使用了这些 API,可能会导致小程序在后台运行时出现问题。
  • 解决方案:确保正确使用这些 API,并在 onHide 中正确处理这些资源。

10. 检查日志

  • 问题描述:闪退问题可能通过日志信息找到原因。
  • 解决方案:在开发工具中查看日志,或者在代码中加入 try-catch 捕获异常。

示例代码

export default {
  onShow() {
    // 恢复页面状态
    this.restoreState();
  },
  onHide() {
    // 保存页面状态
    this.saveState();
    // 取消未完成的网络请求
    this.cancelRequests();
  },
  methods: {
    restoreState() {
      // 恢复页面状态
    },
    saveState() {
      // 保存页面状态
    },
    cancelRequests() {
      // 取消未完成的网络请求
    }
  }
}
回到顶部