wakeLook + GCM

  • 2 Antworten
  • Letztes Antwortdatum
A

assenda

Ambitioniertes Mitglied
0
:scared: Brauche Hilfe!!

wäre supernett wenn mir jemand paar Ideen gibt:
und zwar benutze ich das Google Coud Messaging (GCM).
Für meine App ist es extrem wichtig, dass die Nachrichten,
die versendet werden, auch Zeitnah zugestellt werden.

Im GCM wird dafür der Powermanager benutzt, der den Prozessor dazu bringt,
wieder mit voller Leisung zu arbeiten...Das Problem ist, dass der Prozessor nach Empfang der Nachricht wieder durch wakelook.require() wieder in den Schlafmodus zurückschaltet. (Dadurch dauert es ca 2-5 min bis die Nachr. zugestellt wird)

Deswegen habe ich versucht, beim Start der App keinen Schlafmodus zuzulassen:

Code:
onCreate:

PowerManager mgr = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
        wakeLock.acquire();
habe jedoch leider nicht den gewünschten Effekt erziehlt,
obwohl das wakelook.requiere in der gcm.jar nur den eigenen wakelock schließen sollte

(Benutze ein smartphone quasi als Server direkt am Stromnetz, deshalb ist der Stromverbrauch nicht relevant!)

Wisst ihr, was ich falsch mache? bzw wie ich das Problem beheben kann?
danke :)
 
Mit Android 2.3 gab es eine Änderung bei wakelocks. Wenn du dir das Logfile mal anschaust wirst du eine Zeile finden die darauf hindeutet, dass deine App vom System beendet wurde mit dem Hinweis auf exzessiven wake lock gebrauch. Verwende das Window flag KEEP_SCREEN_ON, oder den wake lock mit vollständig beleuchteten Bildschirm.
 
  • Danke
Reaktionen: assenda
Vielen Dank! Ist mir nicht aufgefallen!
Trotzdem bin ich nicht 100% zufrieden mit der Lösung...auch wenns nicht unbedingt schlimm ist wenn das Display an ist;
Es muss eine Lösung geben, die im Hintergrund läuft
(An dieser Stelle verweise ich auf whatsapp, bei der die nachrichten direkt ankommen!

Edit:

Habe grade ein Kommentar gelesen, der mir evtl bei meinem Problem helfen könnte (werde jetzt an dieser stelle etwas rechachieren):

http://www.whatthedroid.de/2011/10/hintergrundprozesse-in-android-teil-1-started-services/

Eine Erweiterung der Methode onStartCommand wie folgt funktioniert auch bei ausgeschaltetem Display: public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, System.currentTimeMillis()+ ": WhatTheDroidService gestartet."); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My PARTIAL_WAKE_LOCK"); wakeLock.acquire(); // Unsere auszufuehrende Methode. // updateData(); wakeLock.release(); stopSelf(); // Um den Service laufen zu lassen, bis er explizit gestoppt wird, // geben wir "START_STICKY" zurueck. return START_STICKY; }
 
Zuletzt bearbeitet:
Zurück
Oben Unten