注册

常见问题之webView 内存泄露

WebView内存泄露的原因:

webView内部的一些线程持有activity对象,导致activity无法释放。继而内存泄漏。

现象

正常使用都会有内存泄露

image.png

反复进出多次后:
内存没有下降。 image.png

网上查了一些解决办法,主要有两种:

解决方法一

1.在Activity中手动new WebView,然后将Activity通过弱引用的方式传进去。并且在onDestroy里将webview先从父容器中移除webview,然后再销毁webview(调用webView的各种clear)

image.png

image.png

页面反复进出以后:

屁用没有

image.png

解决方法二

2.新启一个进程,单独进程跑webView。AIDL通信。
简化的代码以后:

AIDL接口:
image.png

AIDL的服务: image.png

设置服务隐士启动:
image.png

客户端显示webView的Activity:
image.png

将Activity设置成单独进程:
image.png

在Activity的onDestroy,解绑Service和结束进程
image.png

页面反复进出以后:
没有占用内存,完美。 image.png

补充
如果想要webView跟Activity有更多的数据交互,可以用AIDL->Service(数据交互)->Activity(主进程,Handler、回调等方式)

0 个评论

要回复文章请先登录注册