主要在使用webview的Activity和Fragment退出的时候出现这个错误,目前发现在4.4上出错,6.0没有报错。
原因是:setJavaScriptEnabled(true)会使webview中的某些组件持有Activity的引用,这些组件的生命周期要比Avtivity的长,容易造成内存泄漏。
解决办法:
一、在用到webview的Fragment或Activity中重写Webview,不传Activity的引用。
public class MyWebview extends WebView {
private static final String TAG = "MyWebview";
public MyWebview(Context context) {
// super(context);
super(context.getApplicationContext());
}
public MyWebview(Context context, AttributeSet attrs) {
// super(context, attrs);
super(context.getApplicationContext(), attrs);
}
public MyWebview(Context context, AttributeSet attrs, int defStyleAttr) {
// super(context, attrs, defStyleAttr);
super(context.getApplicationContext(), attrs, defStyleAttr);
}
}
二、调用自定义的webview
private static MyWebview webView;
三、修改布局文件xml
<com.sdhmw.dtwb2.utils.MyWebview
android:id="@+id/fragment_table_3_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>