Zuerst wird Popup-Aktivitäten von einem BroadcastReceiver
als schlechte Form betrachtet, außer in ungewöhnlichen Umständen, da es den Benutzer mitten in was auch immer sie tut, unterbrechen wird. Ich werde im Moment davon ausgehen, dass Sie die 1.337. Wecker-Anwendung für Android schreiben, und deshalb eine Aktivität von einem BroadcastReceiver
basierend auf einem AlarmManager
Alarm aufzudecken ist eine vernünftige Wahl (vorausgesetzt, der Benutzer hat es über die Präferenzen innerhalb angefordert deine App).
Vor diesem Hintergrund können Sie eine Aktivität von einem Dienst nicht "töten".
Sie können jedoch eine Nachricht an die Aktivität senden, wenn sie ausgeführt wird, und sie dann starten, wenn sie nicht ausgeführt wird.
Zum Beispiel könnten Sie eine georderte Sendung senden. Lassen Sie die Aktivität für Ihre Übertragung eine BroadcastReceiver
mit hoher Priorität implementieren, und aktualisieren Sie sie selbst, damit sie den neuen Alarm widerspiegelt. Implementieren Sie eine niederpriore BroadcastReceiver
woanders (z. B. in Ihrem Manifest), und lassen Sie die Dialogaktivität starten, falls die Aktivität nicht verfügbar ist, oder ergreifen Sie eine andere Aktion basierend auf Benutzereinstellungen (z. B. einfach eine Notification
anzeigen).
Wie können Sie eine Nachricht an eine aktuell ausgeführte Aktivität senden, wenn diese Aktivität den Startmodus "Standard" hat? –
@Camille Sévigny: Sicher. Befolgen Sie das in der Antwort beschriebene Rezept. Hier ist eine Beispielimplementierung: https://github.com/commonsguy/cw-advandroid/tree/master/Broadcast/Ordered – CommonsWare