2012-08-16 17 views
29

जब डिवाइस अभिविन्यास में परिवर्तन मैं इस त्रुटि हो रही है कहा जाता है:त्रुटि: WebView.destroy(), जबकि अभी भी संलग्न

protected void onDestroy() 
{ 
    if (adView != null) 
    { 
     adView.destroy(); 
    } 
} 

क्या कारण है:

Error: WebView.destroy() called while still attached

इस कोड के साथ इस? मैं इस त्रुटि से कैसे बचूं?

+1

शायद पूरे कॉल स्टैक को नष्ट आप विचारों सिस्टम से WebView दूर करने के लिए देखें http://developer.android.com/reference/android/webkit/WebView.html#destroy (जरूरत कॉल करने से पहले – nandeesh

+3

में मदद मिलेगी) धन्यवाद – ebtokyo

उत्तर

43

आप पहली बार वेब-दृश्य अलग करने की जरूरत है:

webViewPlaceholder.removeView(myWebView); 
myWebView.removeAllViews(); 
myWebView.destroy(); 

कि यह मेरे लिए किया था।

+0

धन्यवाद। यह त्रुटि अचानक प्रकट हुई, पहले कोई समस्या नहीं थी। यह फिर से तय किया। – Warpzit

+1

घूमना क्यों यह उत्तर सही उत्तर के रूप में चिह्नित किया गया है। इसका प्रारंभिक प्रश्न से कोई संबंध नहीं है। वास्तविक सही उत्तर मैथ्यू – Ernest

+1

से है 'myParentView.removeView (myWebView);' वास्तव में चाल क्या है। – caw

27

त्रुटि से बचने के लिए आपको विज्ञापन को नष्ट करने से पहले सभी विचारों को हटाने की आवश्यकता है।

@Override 
public void onDestroy() 
{ 
    if (adView != null) 
    { 
     adView.removeAllViews(); 
     adView.destroy(); 
    } 
    super.onDestroy(); 
} 
+3

मैं आपको निराश नहीं करना चाहता, लेकिन यह काम नहीं करता है। मुझे अपने वेबव्यू के साथ एक ही समस्या है और मैं हमेशा इस तरह अपना वेब व्यू बंद करता हूं और फिर भी त्रुटि मौजूद होती है। – Leandros

+2

यह मेरे लिए काम करता है। आधिकारिक admob दस्तावेज़ adView.removeAllViews() जोड़ना चाहिए; मैं नहीं चाहता कि गतिविधि नष्ट होने के बाद विज्ञापन अभी भी संसाधनों का उपभोग करे। –

+1

यह पूरी तरह से समस्या का समाधान नहीं करता है। मैं इसे भी पूरा करता हूं, ऐप अभी भी दुर्घटनाग्रस्त है हालांकि इस कोड का उपयोग – BaDo

6

क्योंकि आपको यह त्रुटि नहीं मिलती है, आपको पैरेंट लेआउट होना चाहिए, उदा। : RelativeLayout और WebView घटक को हटा दें, जो आपको लेआउट WebView.xml पर परिभाषित किया गया हो।

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/webviewRelativeLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

<WebView 
    android:id="@+id/webView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/headerAlarmsWebViewTxt" 
    android:layout_marginBottom="0dip" 
    android:hapticFeedbackEnabled="true" 
    android:overScrollMode="never" 
    android:scrollbarAlwaysDrawVerticalTrack="false" 
    android:scrollbars="none" /> 

</RelativeLayout> 

फिर आप इसे एक आवृत्ति चर के लिए असाइन करते हैं उदा। :

_layout = (RelativeLayout) findViewById(R.id.webviewRelativeLayout); 
webView = (WebView) findViewById(R.id.webView1); 

और पर कुछ इस तरह कर नष्ट:

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    _layout.removeView(webView); 
    webView.setFocusable(true); 
    webView.removeAllViews(); 
    webView.clearHistory(); 
    webView.destroy(); 
} 
9
@Override 
public void onDetachedFromWindow() { 
    super.onDetachedFromWindow(); 
    if (mWebView != null) { 
     mWebView.destroy(); 
    } 
} 
+0

धन्यवाद, यह एक अच्छा जवाब है – user1324936

7

मेरी परीक्षण के अनुसार, इस मुद्दे को कम से कम एंड्रॉयड v4.2.2 पर AdMob SDK v6.4.1 में पता चला और है + । https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals#android पर संदर्भित AdMob नमूना अनुप्रयोग का परीक्षण करते समय (सीधा लिंक http://google-mobile-dev.googlecode.com/files/Android_XML.zip है), नमूना स्क्रीन बंद करते समय समस्या उत्पन्न होती है।

मेरे काम के आसपास नहीं बल्कि यह है:

@Override 
    public void onDestroy() 
    { 
    // Destroy the AdView. 
    if (adView != null) 
    { 
     final ViewGroup viewGroup = (ViewGroup) adView.getParent(); 
     if (viewGroup != null) 
     { 
     viewGroup.removeView(adView); 
     } 
     adView.destroy(); 
    } 

    super.onDestroy(); 
    } 

आशा है कि अन्य लोगों को मदद मिलती है, और उस AdMob बहुत जल्द ही है कि कष्टप्रद मुद्दा ठीक कर देंगे।

+0

जो जानता था! बुरा रिसाव के साथ किया। बहुत बहुत धन्यवाद। – YvesLeBorg

संबंधित मुद्दे