2017-08-18 3 views
0

Ich habe eine Tabelle in meiner Datenbank, wo jede Zeile einen Zeitplan beschreibt. Zum Beispiel:Soll ich dafür AlarmManager oder JobScheduler verwenden?

ID | CODE | DAY | TIME 
___________________________________ 
1  1   Mon  8 
2  27   Wed  15 

Mit anderen Worten, jeder Montag um 08.00 Uhr, wird die Funktion zum Code entspricht 1 aufgerufen. Jeden Mittwoch um 15 Uhr wird die Funktion aufgerufen, die dem Code 27 entspricht.

Wie kann man ALLE diese Aufgaben zu den richtigen Zeiten in Android aufrufen? Ich habe sowohl den AlarmManager als auch den JobScheduler gesehen, aber ich weiß nicht, welcher für solche Zwecke besser geeignet ist.

Ich brauche nicht die Zeiten, um super präzise zu sein (die Ereignisse auslösen +/- ein paar Sekunden oder sogar Minuten von den angegebenen Zeiten ist keine große Sache), aber ich brauche sie auszulösen, wann immer möglich.

Antwort

0

Der Alarm Manager ist besser geeignet für die eine oder andere Aufgabe, die Sie beim Erstellen von Alarmen nach Karten zu erstellen versuchen.

+0

Müsste ich PendingIntents für jeden einzelnen Zeitplan erstellen, bei jeder einzelnen Aktivität starten/stoppen usw.? – user8480115

+0

Da Sie eine andere App verwenden, d. H. Alarm Manager, um die Aufgabe auszuführen, müssen Sie ihnen ja die Rechte erteilen, d. H. PendingIntents. – Asim

+0

Ich meine, müssen Sie einen PendingIntent pro Zeile in der db verwenden, und muss ich jeden in jeder Aktivität starten/stoppen? – user8480115

0

Wenn Sie nur Ereignis mit Zeitplan ohne Netzwerk- oder Gebührenüberprüfung auslösen möchten, ist der Alarm Manager eine leichte und funktionierende Lösung.

0

Verwenden Alarmmanager mit setExactAndAllowWhileIdle

Beachten Sie, dass auf Eibisch und später Aufgabe mit Alarmmanager geplant könnte aufgrund Doze verzögert werden. Die einzige Möglichkeit, ein genaues Timing zu erhalten, besteht darin, setAlarmClock zu verwenden, das in der Statusleiste eines Systems möglicherweise ein Weckersymbol anzeigt.

Verwandte Themen