Um dies zu erreichen, müssen Sie zwei Dinge tun:
- Vermeiden Sie die "Force Close" - Standardmethode für Anwendungsabstürze.
- Richten Sie einen Neustartmechanismus ein, wenn der Absturz trotzdem auftritt.
Im Folgenden erfahren Sie, wie Sie dies tun:
Rufen Sie Thread.setDefaultUncaughtExceptionHandler()auf, um alle nicht erfassten Ausnahmen abzufangen. In diesem Fall uncaughtException()wird die Methode aufgerufen. "Schließen schließen" wird nicht angezeigt und die Anwendung reagiert nicht, was nicht ganz gut ist. Um Ihre Anwendung beim Absturz neu zu starten, sollten Sie Folgendes tun:
In der onCreateMethode initialisieren Sie in Ihrer Hauptaktivität ein PendingIntentMitglied:
Intent intent = PendingIntent.getActivity(
YourApplication.getInstance().getBaseContext(),
0,
new Intent(getIntent()),
getIntent().getFlags());
Geben Sie dann Folgendes in Ihre uncaughtException()Methode ein:
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
Sie müssen auch anrufen System.exit(), sonst funktioniert nicht. Auf diese Weise wird Ihre Anwendung nach 2 Sekunden neu gestartet.
Schließlich können Sie ein Flag in Ihrer Absicht setzen, dass die Anwendung abgestürzt ist, und in Ihrer onCreate()Methode können Sie einen Dialog anzeigen "Es tut mir leid, die Anwendung ist abgestürzt, hoffe nie wieder :)".