Dans le cas où vous appelez Fil.setDefaultUncaughtExceptionHandler() sera toujours entrer dans uncaughtException() dans le cas où votre application s'est écrasé. "Force close" ne s'affiche pas et que l'application ne répond pas, ce qui n'est pas une très bonne chose.
Afin de redémarrer votre application quand il s'est écrasé, vous devriez faire la chose suivante :
Dans la méthode onCreate, dans votre activité principale initialiser un PendingIntent membre:
intent = PendingIntent.getActivity(YourApplication.getInstance().getBaseContext(), 0,
new Intent(getIntent()), getIntent().getFlags());
Que dans votre uncaughtException() la méthode:
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
Sans Système d'appel.exit() ne fonctionnera pas. Ce code permet de redémarrer votre application après 2 secondes.
Finalement, vous pouvez définir certains drapeau dans votre intention que l'application s'est écrasé et dans votre onCreate()
méthode, vous pouvez afficher une boîte de dialogue "je suis désolé, l'application s'est écrasé, l'espoir n'a jamais encore :)".