Welche Funktionen kann der AlarmManager auch im sleepMode übernehmen ?

  • Antworten:2
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 15

25.03.2015, 14:56:44 via Website

Hallo zusammen,

ich habe eine App geschrieben, die u.a. intervallmäßig über HttpRequests auf einen (IIS -> SQL)-Server zugreift.
Dieser Ablauf soll auch funktionieren, 1., wenn die App geschlossen ist und 2., wenn sich die CPU im sleepMode befindet.
Umgesetzt habe ich diese Anforderung folgendermaßen. Zu 1., die Requests an den WebServer übernimmt ein Service.
Zu 2., der Service wird von einem AlarmManager getriggert. Dieses Szenario funktioniert für 1. einwandfrei. Bei 2. scheint
es, wenn das Display dunkel geschaltet wird dauert es noch (von Fabrikat zu Fabrikat offensichtlich unterschiedlich) eine gewisse Zeitspanne bis die CPU dann in den sleepMode (wird nicht mehr getaktet, bzw low getaktet) geht. Während der kurzen Zeitspanne arbeitet der vom AlarmManager getriggerte Service noch. Ist die CPU im sleepMode läuft zwar der AlarmManager noch, aber der Service startet keine Requests mehr an den Server.

Aus dieser Beobachtung resuliert meine Frage.

Sollte es so sein, daß der AlarmManager zwar eine Weckerfunktion, ankommende SMS und/oder eingehende Telefonate
'melden' kann aber keine eigens programmierten Funktionen möglicherweise triggert aber die dann nicht zur Ausführung kommen (während sleepMode) suche ich nach einer Möglichkeit Punkt 2 umzusetzen allerdings ohne Wake locks.

Grüße Günter

Antworten
  • Forum-Beiträge: 15

26.03.2015, 18:39:46 via Website

Nach längeren Recherchen, hier meine Lösung, die zu funktionieren scheint. Tests laufen noch.

Die Ausgangsposition ist, die CPU befindet sich im sleepMode.

Statt den Service direkt von einem AlarmManager zu triggern starte ich den Service jetzt über einen BroadcastReceiver, der wiederum
vom AlarmManager als PendingIntent getriggert wird. Das hat zur Folge, daß die onReceive()-Methode aufgerufen wird und dort der Service
gestartet wird (startService(serviceIntent)). Da die Ausführungszeit des Services weit unter 10sec(sh. Docu BroadcastReceiver) liegt und auch keine Ergebnisse an das Receiver-Objekt zurückgeliefert werden, kann der Prozess von Android ohne Folgen beendet werden.
Ein eigens aktivierter WakeLock ist offensichtlich nicht notwendig.

Sollten dieTests negativ verlaufen werde ich mich nochmal an euch wenden.

— geändert am 26.03.2015, 19:05:49 durch Moderator

Antworten

Empfohlene Artikel