2015-03-04 1 views
4

Suite aux suggestions fournies dans this question J'ai modifié mon code AdMob pour être conforme aux recommandations, qui a efficacement fonctionné en réduisant le nombre d'exceptions qui apparaissaient. Cependant, une nouvelle exception est en hausse.Java nullpointer exception de Webview dans android.webkit.WebViewClassic.loadDataWithBaseURL

Le code est le suivant:

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

      Log.i(ApplicationData.APP_TAG, TAG + ": OnDestroy, destroying the Adview"); 
    } 

    super.onDestroy(); 
} 

La méthode adView.destroy() semble bien fonctionner comme le message logcat est publié. Juste après ce message, je reçois l'exception suivante sur WebView:

java.lang.NullPointerException 
    at android.webkit.WebViewClassic.loadDataWithBaseURL(WebViewClassic.java:2741) 
    at android.webkit.WebView.loadDataWithBaseURL(WebView.java:919) 
    at com.google.android.gms.ads.internal.request.n.run(SourceFile:206) 
    at android.os.Handler.handleCallback(Handler.java:725) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:153) 
    at android.app.ActivityThread.main(ActivityThread.java:5297) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
    at dalvik.system.NativeStart.main(Native Method) 

Unfourtunately Je ne suis pas en mesure de trouver un moyen de reproduire le problème, mais qui se passe dans la production régulièrement. Je n'ai pas réussi à trouver de problème, quelqu'un a-t-il une idée de ce que je peux faire?

+1

Que se passe-t-il sur la ligne 2741 dans WebViewClassic? –

+1

Je ne suis pas vraiment familier avec cette partie du code android. –

+1

http://grepcode.com/file/repo1.maven.org/maven2/org.robolectric/android-all/4.3_r2-robolectric-0/android/webkit/WebViewClassic.java#WebViewClassic.loadDataWithBaseURL%28java.lang. Chaîne% 2Cjava.lang.String% 2Cjava.lang.String% 2Cjava.lang.String% 2Cjava.lang.String% 29 –

Répondre

5

un des SDK Google Mobile Ads équipe dit (14 Mars),

Nous avons examiné cette question quand il a été rapporté, et un correctif a été publié dans les services Google Play. Vous devriez voir de moins en moins d'instances au fur et à mesure que les appareils de vos utilisateurs passent à la nouvelle version.

Se reporter à https://groups.google.com/forum/#!topic/google-admob-ads-sdk/oYpQI_L14Tg

+0

Merci, on dirait que le bug est dans les mobiles Android et il va disparaître à mesure que les utilisateurs mettent à jour les versions les plus récentes. Merci de l'avoir repéré. –

2

Cela se produit lorsque le WebView est détruit avant loadDataWithBaseUrl est appelé (probablement par un autre fil). Dans le code AdMob, j'ai vu qu'ils traitent maintenant comme suit:

public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) { 
     synchronized(this) { 
      if(!this.isDestroyed()) { 
       super.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); 
      } else { 
       Log.d("The webview is destroyed. Ignoring action."); 
      } 

     } 
    } 

Il ne devrait donc pas se produire maintenant.

+1

jusqu'à présent, je n'ai pas vu de nouvelle erreur. Merci pour l'effort archéologique –