Android上包含webview的PageViewer内存泄漏
我在我的应用程序中使用Android上包含webview的PageViewer内存泄漏,android,memory-leaks,webview,Android,Memory Leaks,Webview,我在我的应用程序中使用ViewPager。每个页面都包含一个WebView和一些ImageView。我知道WebView是最关键的视图 当我旋转屏幕时,活动不会被破坏。 在destroyItem()中,我使用以下代码: @Override public void destroyItem(View collection, int position, Object view) { LinearLayout layout = (LinearLayout)((LimitScrollView)((
ViewPager
。每个页面都包含一个WebView
和一些ImageView
。我知道WebView
是最关键的视图
当我旋转屏幕时,活动
不会被破坏。
在destroyItem()
中,我使用以下代码:
@Override
public void destroyItem(View collection, int position, Object view) {
LinearLayout layout = (LinearLayout)((LimitScrollView)((RelativeLayout)view).getChildAt(0)).getChildAt(0);
for (int i = 0; i < layout.getChildCount(); i++) {
View locView = layout.getChildAt(i);
if (locView.getTag() !=null && ((String)(locView.getTag())).equals(ADAPTER_TAG_WEBVIEW)){
FrameLayout webViewFrame = (FrameLayout)locView;
WebViewSub webView = (WebViewSub ) webViewFrame .getChildAt(0);
webView.destroy();
webView = null;
webViewFrame.removeAllViews();
}
}
((ViewPager) collection).removeView((View) view);
}
@覆盖
公共项(视图集合、int位置、对象视图){
LinearLayout布局=(LinearLayout)((LimitScrollView)((RelativeLayout)视图).getChildAt(0)).getChildAt(0);
对于(int i=0;i
我试图从活动
中的ondestory()
方法中删除所有WebView
,但在旋转之后,我在垫子中有两个活动
实例。
如果我不使用
WebView
我在轮换后有一个活动。MAT显示您在第二个活动上保留了什么?第二个(垃圾)活动包含ImageView、frameLayout和webkit回调。我不知道如何删除webkit回调。这就是问题所在?MAT向您展示了什么在坚持第二项活动?请注意,我没有问第二个活动包含什么。在“传入引用”中,我看到了这些UI元素。如果不在PageViewer中使用webView,则不会出现此问题。我对它进行了测试。要确定MAT中的对象上有什么,可以使用“GC根路径”。您可能希望在Android上使用MAT观看谷歌I|O视频: