Um diese zwei Dinge zu erreichen tun:
- Vermeiden Sie die „Force close“ - Standardmethode der Anwendung zum Absturz bringen.
- Richten Sie einen Neustartmechanismus ein, wenn der Absturz trotzdem auftritt.
Siehe unten, wie diese zu tun:
Anruf Thread.setDefaultUncaughtExceptionHandler()
um alle abgefangene Ausnahme zu fangen, wobei in diesem Fall uncaughtException()
Methode aufgerufen wird. "Schließen erzwingen" wird nicht angezeigt und die Anwendung reagiert nicht, was nicht sehr gut ist. Um Ihre Anwendung neu zu starten, wenn es abgestürzt Sie Folgendes tun sollten:
Im onCreate
Methode initialisieren in Ihrer Haupttätigkeit ein PendingIntent
Mitglied:
Intent intent = PendingIntent.getActivity(
YourApplication.getInstance().getBaseContext(),
0,
new Intent(getIntent()),
getIntent().getFlags());
dann in den folgenden setzen Ihre uncaughtException()
Methode:
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
Sie auch System.exit()
nennen müssen , sonst wird nicht funktionieren. 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 abgestürzt, hoffe nie wieder :)".
Versuchen Sie, die Ausnahmen richtig zu bekommen.Eine Anwendung, die sich automatisch neu startet, kann für Benutzer lästig sein. –
Ich möchte nur meine Anwendung neu starten, wenn es abgestürzt ist. Ich denke, es wäre freundlicher als lästig, besonders wenn der Benutzer in meiner Anwendung ist. Und ja, ich versuche, jede Ausnahme richtig zu machen. :) – Johnny
@Johnny: Bitte teilen Sie die Lösung für Ihr Problem. –