0

Ich fragte diese Frage früher, aber jemand dachte, ich hätte nicht genug erklärt und die Antwort abgelehnt und nie wieder auf Upvote, obwohl er eine Antwort hatte, nachdem ich die Erklärungen hinzugefügt. Und jetzt ist niemand daran interessiert, mir eine Lösung für diesen Thread zu liefern. Also frage ich es hier nochmal.Alarmmeldung Dialog wird fortgesetzt, wenn App wieder startet

Ich habe eine Anwendung, wo der Benutzer einen Alarm einstellen kann und erwarten, dass die App einen Bildschirm öffnet (ob die App gerade aktiv ist oder im Hintergrund oder getötet wird), die eine Nachricht mit einer OK-Taste zeigt. Etwas wie folgt aus:

enter image description here

Szenario 1: Glücklicher Fluss

Anwendung ist offen und läuft

  • Wenn die Zeit für den Alarm auf, der Alarm Dialog erscheint auf dem Bildschirm mit Nachricht und OK-Taste und der Alarm beginnt zu klingeln.
  • Der Benutzer klickt auf OK, um den Alarm zu bestätigen.
  • Der Dialog wird beendet und der Alarm klingelt -> finish() wird in der onClick-Methode von OK aufgerufen.

Szenario 2: Problematische Fluss

Anwendung

  • backgrounded ist Wenn die Zeit für den Alarm ist oben, der Alarm Dialog erscheint auf dem Bildschirm mit der Meldung und OK-Taste und der Alarm beginnt Ring.
  • Benutzer klickt auf OK, um es zu schließen -> Alarm stoppt und der Dialog wird geschlossen -> Benutzer geht zu recents -> Setzt die App fort -> Alarmdialog erscheint wieder und Alarm klingelt!

Der einzige Weg, um den Zyklus und gehen Sie zurück in die App-Homepage zu beenden, ist die App von den recents zu töten und die App Relaunch oder die App Relaunch durch Klicken auf das Symbol, anstatt sie von den recents wieder aufzunehmen.

Was ich versucht habe:

Die OK-Taste auf dem Alarmbildschirm ruft finish() so erwarte ich die Aktivität auf dem Klick auf OK zerstört werden. Außerdem ist die Alarmbenachrichtigungsaktivität im Manifest als noHistory = "true" gekennzeichnet, und die Absicht hat das Kennzeichen FLAG_ACTIVITY_CLEAR_TOP, um sicherzustellen, dass sie gelöscht und nicht gespeichert wird.

Das Starten meiner Home-Aktivität per Klick auf OK programmgesteuert ist eine der Lösungen, die funktionieren, aber ich möchte diesen Weg nicht gehen, wenn es keine Arbeit gibt. Was ich sicher bin.

Überall sehe ich, dass dies die einzigen zwei vorgeschlagenen Lösungen sind, um die Aktivität aus dem Back-Stack entfernen zu lassen, um nie wieder aufzutauchen. Aber diese scheinen nicht den Trick für mich zu machen. Ich bin mir sicher, dass ich etwas Grundlegendes vermisse, aber ich kann nicht für das Leben von mir denken oder finden, was es ist.

Antwort

0

Ich nehme an, Sie verwendeten Android-Alarm setRepeating(). Sie müssen den Alarm abbrechen, wenn der Benutzer auf OK klickt.

PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.cancel(sender); 
+0

In Ordnung, Sie hatten also recht, dass ich den Alarm nicht abgebrochen habe.Aber in diesem Fall klicke ich auf OK, und wenn ich meine App von meinen Recents aus aktiviere, wird der Benachrichtigungsdialog (der eine Android-Aktivität ist) onCreate aufgerufen. Hier ist der Klingelton so eingestellt, dass er klingelt. Es geht also nicht um den * Alarm * selbst, sondern darum, dass der Dialog, der in diesem Fall eine Aktivität ist, von Android ausgewählt wird, um die Wiederaufnahme anzuzeigen, möglicherweise weil es die letzte * aktive * Aktivität in meiner App war . So fühle ich mich los von der Aktivität aus dem Backstack Shud tun den Trick? – LeoNeo

+0

Um nur zu erwähnen, ich bin jetzt den Alarm mit einem Klick auf OK abbrechen. Und ich bin nicht sicher, wie man die Tätigkeit vom Backstack loswerden kann. Das Verhalten, das ich will, ist ... Alarmdialog sollte erscheinen, wenn die Zeit abgelaufen ist -> Benutzer klickt OK -> Dialog abgewiesen -> Benutzer geht um die App neu zu starten und wieder aufzunehmen -> App zeigt den Startbildschirm genauso an, als ob die App frisch gestartet wäre. – LeoNeo

+0

Haben Sie den Alarmdialog verwendet? Wenn ja, dann [diese Seite] (http://stackoverflow.com/questions/14853325/how-to-dismiss-alertdialog-in-android). –

Verwandte Themen