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.

  • ¿Por qué la clase singleton sobrevive a la actividad?
  • ¿Android pasa información persistente en paquetes o usa un patrón singleton?
  • ¿Puede el recolector de basura desasignar una instancia singleton? (Y por qué o cómo evitarlo)
  • Android MediaPlayer Singleton
  • Picasso Singleton Uso
  • Cómo pasar el contexto de la aplicación dentro Singleton y SharedPreferences Clases
  • Actividad de Android singleton
  • SQLite incapaz de abrir el archivo de base de datos (código 14) en la consulta "SELECT" frecuente
  • Usando Gson para deserializar a Json en un singleton
  • ¿Es necesario guardar singletons?
  • Ciclo de vida de aplicaciones Android y singelton
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.