2011-01-16 4 views
0

Ich mache eine Alarm-App für Android. Sobald der Benutzer einen Alarm geplant hat, zählt ein Thread, bis der Alarm erreicht ist, und dann ertönt ein Alarmton.Android: Halten Sie einen Thread laufen, auch wenn das Gerät gesperrt ist

Der Zähl-Thread stoppt jedoch, wenn das Gerät gesperrt ist (ich meine, wenn der Bildschirm nach einer halben Minute ausschaltet) und von dort weitergeht, wenn es wieder entsperrt wird - auch wenn das Stunden später ist.

Das macht für eine ziemlich seltsame Alarm-App. Ich habe in AlarmManager nachgeschaut, aber es scheint, dass es in meinem Fall nicht angebracht ist, da ich nur den Alarm möchte wenn meine App noch läuft. Das Beenden der App sollte es stoppen. Hier ist, was Alarmmanager in der Dokumentation sagt aber:

Hinweis: Der Alarm Manager soll für Fälle, in denen Sie Ihre Anwendungscode ausgeführt haben wollen, zu einem bestimmten Zeit, auch wenn Ihre Anwendung ist nicht derzeit ausgeführt werden. Für das normale Timing Operationen (Ticks, Timeouts, etc) es ist einfacher und viel effizienter zu Handler verwenden.

Die "Handler" -Klasse, die es erwähnt, scheint für etwas völlig anderes als das, was ich versuche zu erreichen.

Also frage ich Sie: Wie kann ich meinen Thread am Leben und zählen auch wenn das Gerät gesperrt ist? Oder gibt es einen anderen Weg?

+1

Können Sie einen Zustand beim Herunterfahren der App festlegen und diesen bei einem Alarmereignis später lesen? – gbn

+0

Sie sagen, dass der Alarm nur dann ausgelöst werden soll, wenn Ihre App noch läuft. Was bedeutet "Laufen" für deine App? Die Idee von Android könnte anders sein als die, die deine App dem Nutzer hier vermitteln soll. – adamp

Antwort

0

Warum verwenden Sie keine Benachrichtigungen? Sie können Ton, Vibration, Lichter und ein Symbol in der Statusleiste einstellen. Wenn Sie die Benachrichtigung abbrechen möchten, verwenden Sie den NotificationManager.

http://developer.android.com/guide/topics/ui/notifiers/notifications.html#CreateANotification

Geert

+0

Ich verwende NotificationManager, kann ich aber auch Benachrichtigungen zu einem späteren Zeitpunkt planen? –

+0

Sie können ihnen sagen, wann zu passieren oder meinst du 10 mal in 10 Sekunden ?? –

2

Sie müssen nicht dies nicht zu tun. Bewahre keinen Faden für einen Alarm auf. Verwenden Sie die AlarmManager

Auch gibt es kein Konzept Ihrer App "läuft" oder nicht. Meinst du nur wenn es sichtbar ist? Löschen Sie einfach Ihren Alarm in onPause().

Verwandte Themen