常见问题之webView 内存泄露
WebView内存泄露的原因:
webView内部的一些线程持有activity对象,导致activity无法释放。继而内存泄漏。
现象
正常使用都会有内存泄露
反复进出多次后:
内存没有下降。
网上查了一些解决办法,主要有两种:
解决方法一
1.在Activity中手动new WebView,然后将Activity通过弱引用的方式传进去。并且在onDestroy
里将webview先从父容器中移除webview,然后再销毁webview(调用webView的各种clear)
页面反复进出以后:
屁用没有
解决方法二
2.新启一个进程,单独进程跑webView。AIDL通信。
简化的代码以后:
AIDL接口:
AIDL的服务:
设置服务隐士启动:
客户端显示webView的Activity:
将Activity设置成单独进程:
在Activity的onDestroy,解绑Service和结束进程
页面反复进出以后:
没有占用内存,完美。
补充:
如果想要webView跟Activity有更多的数据交互,可以用AIDL->Service(数据交互)->Activity(主进程,Handler、回调等方式)