Android加载H5页面手机的返回操作

最近接了一个新项目,项目说是混合开发,其实就是原生给个壳,实现全是前端的同学做的,接到项目后,领导说了很多bug,其中这个比较有趣,所以在这个记录一下,还原一下:

当我们登录成功后进入首页,然后再首页深入点击进入多级页面,点击手机的返回按钮,可以实现返回到上个页面,但是当返回到首页后,正常来说点击返回按钮应该走我写好的退出页面的方法,但是它并没有走退出的方法,而是走了,还有页面返回的方法,导致每次点击后都会在首页,无法触发退出,但当我们多次快速点击返回按钮时,可以触发退出的方法,这就比较奇怪了,

我看了下代码,代码是这样写的:

Android加载H5页面手机的返回操作

重写返回键,cangoback的时候就返回,否则就退出,看了半天也没有发现什么问题,

于是我请教了一下大佬,大佬说如果首页加载的webview,你现在是在fragment里面finish活动肯定不行,需要做个事件分发,用eventbas或者是广播去通知mainactivity去finish掉才能退出整个App。其实就是一句话,不能在fragment中finish掉activity。

我听了后觉得有些麻烦,况且,我加载H5页面是在activity中的,并不是在fragment中的,按理来说在activity中加载H5页面,上面代码操作应该是没有毛病的,我自己写了demo测试了,完全没有问题,这个问题各位大佬要是有办法,请指教一下,谢谢。

但是问题出现了还是要解决的。我用了一个简单粗暴的方法搞定了:

我在加载首页的时候获取了url,然后保存住,然后我利用webview.geturl,来和我的首页进行对比,一样的话就给他退出,否则的话就返回上一个页面。

Android加载H5页面手机的返回操作

geturl就是你当前webview加载的url页面是什么。因为我们现在的bug是到首页了退出不了,所以我就直接对比一下,一样的话就直接走退出方法就行了。

Android加载H5页面手机的返回操作