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(); } }); } } 
  • Vibrar en la notificación push
  • ServiceConnectionLeaked en Android
  • Notificación de primer plano en Android inicia nueva Actividad (vía pendingIntent) en lugar de una existente
  • Notificación de IntentService - NullPointerException mientras obtiene Context
  • Android Service está creando una y otra vez
  • Android NotificationListenerService lanza DeadObjectException
  • Android: escucha los mensajes SMS entrantes
  • Diferencias entre intención y pendiente
  • No se puede solucionar la excepción MediaController.show ()
  • ¿Puedo llamar a stopSelf () en Service.onStartCommand?
  • El servicio de Android onStartCommand nunca se llama
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.