我的测试代码:
public class MyActivity extends AppCompatActivity {
WebView myWebView;
RelativeLayout WebViewLayout;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
WebViewLayout = (RelativeLayout) findViewById(R.id.webViews);
myWebView = new WebView(this);
WebViewLayout.addView(myWebView);
}
}
导致我的4.1设备上的WebView中出现内存泄漏(我使用MAT进行分析):
Class Name
java.lang.Thread @ 0x4212f6b8 WebViewCoreThread Thread
'- <Java Local>, target android.webkit.WebViewCore$WebCoreThread @ 0x4205d390
'- core android.webkit.WebViewCore @ 0x4212f608
'- mContext com.packagename.MyActivity
我添加了onDestroy():
@Override
public void onDestroy() {
WebViewLayout.removeAllViews();
if(myWebView != null) {
myWebView.removeAllViews();
myWebView.onPause();
myWebView.getSettings().setJavaScriptEnabled(false);
myWebView.destroy();
myWebView = null;
}
super.onDestroy();
}
但是在4.1内存泄漏仍然存在。 我尝试使用getApplicationContext()代替[this],但结果相同。
在4.4设备上没有内存泄漏。 在&lt; = 4.1上的WebView中是否有错误? 有可能解决它吗?
谢谢!