Unter bestimmten Umständen muss ich exit()
in meiner Anwendung aufrufen (ich weiß, es ist nicht der beste Weg, um zu beenden, aber das ist nicht die Frage). Außerdem möchte ich einen neuen Dialog anzeigen, der den Benutzer über den Absturz informiert.Neue Aktivität startet manchmal nicht
Ich erstellte eine neue Aktivitätsklasse, einen neuen Broadcast-Empfänger, registriert sie in Manifest. Als nächstes rufe ich:
Intent intent = new Intent(this, AppCloseReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);
try
{
pendingIntent.send();
}
catch(Exception ex){}
System.exit(0);
Das Problem ist, dass neue Fenster manchmal erscheint! Zuerst dachte ich, dass System.exit(0);
ausgelöst wird, bevor neue Aktivität eine Chance haben zu starten (wegen Async-Aufruf, Gedanke konnte dies in der Dokumentation nicht finden), so fügte ich Thread.sleep(1000)
zwischen pendingIntent.send();
und System.exit(0);
, aber das Ergebnis ist das gleiche - neues Fenster erscheint manchmal . Es gibt nichts in den Protokollen, keine Ausnahme.
Die neue Aktivität ist nur ein statischer Text.
Dies ist absolut nicht zuverlässig. Durch den Aufruf von 'System.exit()' wird die VM im Grunde beendet. Sie können nicht garantieren, dass beim Herunterfahren der VM etwas passiert. Sie können sicherlich nicht erwarten, dass in der Benutzeroberfläche etwas angezeigt wird. Bitte erläutern Sie Ihren Anwendungsfall und vielleicht können wir Ihnen eine Alternative vorschlagen. –
Mein Anwendungsfall ist es, unter bestimmten Bedingungen 'zu beenden 'und dem Benutzer mitzuteilen, warum die Anwendung gestoppt wurde. Als Alternative verwende ich eine Benachrichtigung, aber ich möchte mehr Persistenzlösung, die auf dem Bildschirm bleiben und warten soll, bis Benutzer sie manuell schließt. – nikitablack