Detectar bloqueo de servicio

Tengo un servicio, con onStartCommand() similar a esto:

 private User user; @Override public int onStartCommand(@Nullable final Intent intent, final int flags, final int startId) { if (user == null) { user = UserList.getInstance().getSpecialUser(); } Assert.assertNotNull(user); // // Build notification here, seomehow based on user object // startForeground(42, notification); return START_STICKY; } 

Obviamente, quiero que mi servicio se ejecute en primer plano, y correr por el mayor tiempo posible.

Esto funciona bien, hasta que mi aplicación se bloquea en alguna parte en sus clases de red. Cuando sucede entonces, se muestra el cuadro de diálogo de bloqueo de la aplicación, el usuario lo confirma, toda la aplicación se vuelve a crear, también el servicio se vuelve a crear, pero UserList está vacía, por lo que getSpecialUser() devuelve null y Assert crasehs la aplicación. Android se da por vencido y el usuario termina en la pantalla de inicio.

¿Hay una manera de detectar el accidente que me permitirá manejar la situación con más gracia?

Crear una excepción de excepciónHandler en su aplicación

 public class MyApplication extends android.app.Application{ @Override public void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread arg0, Throwable arg1) { doSomething(); } }); } } 
  • ¿Cómo utilizar PendingIntent para comunicarse desde un servicio a un cliente / actividad?
  • ¿Por qué el servicio Android falla con NullPointerException?
  • Servicios de Android: START_STICKY no funciona en Kitkat
  • No se puede iniciar el servicio con null
  • No se puede realizar la sincronización (onPerformSync no se llama)
  • BroadcastReceiver cuando se cambia el estado de la red wifi o 3g
  • Cree sólo una instancia de Service (Android)
  • PeekService () devuelve null aunque el servicio se está ejecutando, si el servicio es reiniciado por el sistema después de matar OOM
  • Android: cómo determinar si ya se está ejecutando un servicio?
  • Suscripción o vinculación a un servicio de Intent existente
  • Throwable: No se pudo crear la tarjeta SD
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.