Android Deep Sleep und Wake Locks
Ich habe eine Android-App erstellt, die auf allen Handys einwandfrei funktioniert. Bei meinem Alcatel-Telefon funktioniert dies jedoch nicht, da das Telefon in einen Tiefschlafmodus wechselt und das Datennetzwerk ausfällt, sodass die App kein Datennetzwerk erhält und die Daten vom Server nicht synchronisiert.
Mein Design ...
SystemBootReceiver
->(DataSyncService)Service
->(MyBroadcastReceiver)BroadcastReceiver
->(MyDataService)Service
.
Also starte ich hier beim SystemstartDataSyncService
wo ich die aufstelleAlarmManager
(wiederholt) und die anrufenMyBroadcastRecever
. Nach dem Aufruf derBroadcastRecever
ich halte anDataSyncService
telefonischstopself()
.
Jetzt dieMyBroadcastRecever
ruft dieMyDataService
.
Ich bin auf WakeLocks gestoßen, die wie gesagt verhindern, dass das Telefon in den Tiefschlafmodus wechselt. Also habe ich es drinnen implementiertMyDataService
onCreate()
Methode
PowerManager pm = (PowerManager)
getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
mWakeLock.acquire();
Undrelease()
die Wecksperre vor dem Beenden des Dienstes.
Ich habe auch die Erlaubnis in Android Manifest gesetzt.
Aber das hat nicht funktioniert. Also für einen kurzen Check habe ich verwendetWAKE LOCK App vom Markt.
Aber das hat das Telefon auch nicht aufgeweckt. Wieder bin ich auf die App WAKE MY ANDROID (App aus dem Store entfernt) vom Markt gestoßen und habe sie installiert. Und hier ist ein Zauber passiert.
Es hielt das Telefon am Leben.
Wie die Beschreibung in dieser App besagt, haben sie auch eineWake Lock
. Was vermisse ich dann?
Gibt es einen Implementierungsfehler oder ein Designproblem?