17

utilizo AdWhirl y Admob en una de mi aplicación, después de la liberación, tenemos una gran cantidad de errores de AdWhirl, y es fácilmente reproducir la siguiente manera:AdWhirl causando java.lang.NullPointerException después de la red de apagado

Después aparece el anuncio , Cierro el wifi y aguardo el tiempo de espera del anuncio, luego presiono el botón Atrás para salir de la aplicación.

entonces el fallo appear.The src puede descargar desde this .y la excepción es la siguiente:.

05-17 11:00:13.265: E/AndroidRuntime(12482): java.lang.RuntimeException: Unable to destroy activity {me.test.admob/me.test.admob.AdWhirlTestActivity}: java.lang.NullPointerException 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3112) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3130) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.access$1200(ActivityThread.java:123) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1180) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.os.Looper.loop(Looper.java:137) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at java.lang.reflect.Method.invoke(Method.java:511) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at dalvik.system.NativeStart.main(Native Method) 
05-17 11:00:13.265: E/AndroidRuntime(12482): Caused by: java.lang.NullPointerException 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.webkit.WebView.requestFocus(WebView.java:7650) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2113) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.View.requestFocus(View.java:5323) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewRootImpl.clearChildFocus(ViewRootImpl.java:2200) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3591) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3561) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.removeView(ViewGroup.java:3509) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:998) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1843) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:314) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.Activity.performDestroy(Activity.java:4629) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1079) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3099) 
05-17 11:00:13.265: E/AndroidRuntime(12482): ... 11 more 

Después de mi prueba, encuentro esta excepción sólo aparece cuando el uso AdWhirl con ListFragment en ViewPager, si Solo uso en ListFragment o uso Fragment en ViewPager. Funciona normalmente. Pero aún quiero saber qué ocurre y cómo puedo solucionar esta excepción.

Cualquier respuesta será apreciada.

+0

¿Estás asegurándote de llamar a destroy en tu adview adview en onPause o onDestroy? En realidad parece que estás haciendo algo mal en ontroy() tal vez. ¿Has anulado en Destroy? Si es así, publícalo por favor. – LuxuryMode

+0

no, simplemente salgo sin hacer nada. el src se puede encontrar en https://github.com/notenking/AdWhirlException/blob/master/src/me/test/admob/AdWhirlTestActivity.java – notenking

Respuesta

1
  1. asegurarse de manejar AdWhirl en su onDestory() Método
  2. utilizar un intento de captura para atrapar el NullPointer, en contacto con los devlopers y la esperanza de que van a solucionar este problema (si se trata de un error)
+1

Este error se puede eliminar de muchas maneras sin intentar capturar, pero quiero conocer el mejor método para eliminarlo o las razones realmente conducen a esto. – notenking

0

comprobar Allways el contenido del objeto que lleva la conexión al servicio

if(conection !=null){ 
execute(); 
} 

debido a que su uso de un web View comprueba siempre que la conexión está en los teléfonos antes de ejecutar esto debería detener la NullPointer

que es difícil dar una mejor visión sin un ejemplo de su código

pero se puede comprobar mediante el gestor de conectividad abajo abajo es un ejemplo de cómo comprobar si hay wifi

public boolean isOnWifi(Context context) { 
    ConnectivityManager connManager = (ConnectivityManager) context 
      .getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    if (mWifi.isConnected()) { 
     return true; 
    } 

    return false; 
} 

para ver si hay una conexión celular acaba de cambiar a ConnectivityManager.TYPE_WIFI ConnectivityManager.TYPE_MOBILE

+0

¿Qué le parece poner un poco de esfuerzo en su respuesta? ¡¡¡Corrija los errores tipográficos y, especialmente, proporcione un código que al menos no tenga errores de sintaxis ?! – WarrenFaith

0

buscará una función a la que AdMob o AdWhirl es T para cambiar el anuncio publicitario cada varios segundos o minutos. Esta excepción ocurre porque no hay un manejador de excepciones en esa función. Después de apagar el wifi, algunos códigos esperan una conexión a Internet que funcione correctamente, pero ya no hay conectividad. En el mejor de los casos, intente esto:

  1. Vaya a la función donde se cambia el banner publicitario cada x segundos/minutos.
  2. Allí debe rodear el código con un manejador de excepciones, p. trata de atraparlo. Y atrapa la NullPointerException.
Cuestiones relacionadas