解决jsbridge在原生app上页面调用两次的问题

最近做一个项目,需要h5页面嵌入到安卓原生app上,虽然我不太赞同这种技术方案,但还是做了,因为我认为如果不跨平台运行,最好是安卓自己开发,嵌入h5的除非需要运行在不同的系统上,比如说需要ios和window都需要运行,这时候嵌入h5是一个绝佳的方案,因为节省了很多开发成本。

下面说说这两次加载的问题吧,因为需要交互用到了jsbridge,第一次使用这个东西,抱着试试的心态看了api,引入了,挺不错的,一切都运行正常,大概h5写了40多个页面。

一个多月时间过去了,项目也快上线了,一个支付的页面,请求二维码,结果因为支付的系统不支持调用两次支付二维码,或者说是服务器压力扛不住,十分之一的概率出现加载二维码失败的问题,排查这个问题,最初打了log,发现接口总是调用两次,what's fuck ,什么鬼,难道是代码逻辑写的有问题,仔细看代码,逻辑没问题,为什么加载两次呢,换个页面打了log,惊奇的发现竟然所有页面都载入了两次,这简直是不能忍(本人有代码洁癖),

。。。。。。这中间经历很多尝试

写了几个测试的html嵌入安卓的webview中,发现不会加载两次,那么到现在怎么解决已经很清晰了,没错就是用iframe包裹我们的vue单页面应用,让原生app的webview感知不到URL的变化,完美解决。

亲测,如果只使用jsBridge的webview不初始化jsbridge是不会加载两次的,排除了url带#的问题

问题的原因大概是因为我们

1、路由变化加载了一次,

2、webview为了保持jsbridge通信正常又加载了一次,

所以是两次

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值