WebView - 设备上的简单代码中的内存泄漏< = 4.1

时间:2015-05-15 07:07:01

标签: android android-webview

我的测试代码:

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中是否有错误? 有可能解决它吗?

谢谢!

0 个答案:

没有答案