uniapp遇到E/NativeInvokeHelper: io.panxu.plugin.PanxuModule@556eac9 Invoker pay exception:java.lang避坑

app重启了之后,这个实例mWXSDKInstance的地址就变了,变成了新的实例,但是前端调用的函数指向的实例是旧的,导致调用函数没有反应,
I/hwschromium-3151: [INFO:gesture_detector.cc(630)] Stop drag long press timer.点击按钮调用函数也没有反应。

这个bug不是那么好复现的,我发现是重启app了才会出现这个情况(plus.runtime.restart()),app重启了之后,实例指向的地址也发生了改变,所以导致新的实例没有办法获取到原来实例的一些状态或者数据,也就导致了app某些功能会失效,例如音频播放插件使用不正常等等…
因此,如果是在退出登录等功能,退出app之类的,不要去使用plus.runtime.restart(),这会销毁app的生命周期,导致app有一个新的mWXSDKInstance。

因此,我使用的是:
uni.reLaunch({ url: '../login/login' });
直接跳转到页面,并处于栈顶,并且只存在它自己一个页面。
当然,如果在这个login页面又手动退出了呢?这个时候app退出应用了,再点进来也是相当于重启,这时候就要在onBackPress做好判断,防止真正退出app,导致app实例不再如初,而是隐藏app到后台:

		onBackPress() {
			//销毁app
			let main = plus.android.runtimeMainActivity();
			//为了防止快速点按返回键导致程序退出重写quit方法改为隐藏至后台
			plus.runtime.quit = function() {
				main.moveTaskToBack(false);
			};
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一粒程序米

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值