场景
app端使用webview加载网页,并提供了一个closeWeb方法给网页端调用。但是没想到,网页调用这个方法导致app闪退。
原因分析
大家知道,不管是Android还是IOS都只能在主线程中操作UI,如果在其它线程中操作UI会直接闪退。上述问题就是这个原因导致。
原生提供的closeWeb方法里面有操作UI逻辑,而且没有主动把这部分逻辑放在主线程中,那js调用的时候,就是在当前调用线程中执行UI的逻辑。而在浏览器中,点击事件、网络请求都是浏览器新开的线程。所以导致app闪退。
总结
app爆露给网页的方法,操作UI的逻辑要主动切换到主线程中。