Excepción de puntero nulo durante la instrucción 'monitor-enter v1'

Consigo este error ahora cada vez
dentro de public void onResponse (llamada de llamada, respuesta de respuesta) { :

mContext.runOnUiThread(new Runnable() { @Override public void run() { LocalDBUtility local=LocalDBUtility.getInstance(); //code } 

dentro de mi clase singleton LocalDBUtility

 static LocalDBUtility localDBUtility; private LocalDBUtility(){ } public static LocalDBUtility getInstance(){ if(localDBUtility==null){ synchronized (localDBUtility) { localDBUtility = new LocalDBUtility(); } return localDBUtility; }else { return localDBUtility; } } 

Quiero saber qué causó NPE?

Rastro de la pila:

  java.lang.NullPointerException: Null pointer exception during instruction 'monitor-enter v1' at com.utilities.LocalDBUtility.getInstance(LocalDBUtility.java:34) at com.MainActivity$4.run(MainActivity.java:386) at android.app.Activity.runOnUiThread(Activity.java:5506) at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5763) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755 

2 Solutions collect form web for “Excepción de puntero nulo durante la instrucción 'monitor-enter v1'”

  if(localDBUtility==null){ synchronized (localDBUtility) { 

Si localDBUtility es nulo, no se puede llamar a sincronizar. Sólo se puede sincronizar en un objeto instanciado.

En Java cada instancia de un tipo de referencia tiene su propio monitor asociado con él. El bloque sincronizado utiliza este monitor, bloqueándolo cuando un hilo entra y lo desbloquea cuando este mismo hilo lo deja. Si pasa una referencia nula al bloque sincronizado, la operación que intenta obtener el monitor asociado se llamará en una referencia nula que da como resultado una excepción NullPointerException. Por lo tanto, no se puede sincronizar en las referencias nulas.

Ya puede ver que el código que está ejecutando está intentando utilizar una referencia nula ("localDBUtility == null") para el bloque sincronizado que obviamente resulta en un NPE.

Nota: Un monitor es un constructo de sincronización que se utiliza para implementar la exclusión mutua.

  • Métodos estáticos o Singletons rendimiento-sabio (Android)?
  • Cómo declarar variables globales en Android?
  • Singleton objeto está recreando
  • Los datos estáticos guardados dentro de singleton son nulos a veces cuando se vuelve a la aplicación desde el fondo
  • Acceder a los campos singleton mediante un método estático
  • Tiempo de vida único estático en Android
  • Clase de Aplicación SingleTon de Kotlin
  • Picasso Singleton Uso
  • Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
  • Uso del patrón de diseño Singleton para SQLiteDatabase
  • Objetos de comunicación entre fragmentos múltiples en ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.