Problem mit ScreenON Receiver

B

BearGr

App-Anbieter (Trial)
6
Hi,

ich habe eine kleines Problem mit einer App von mir.

Die App reagiert, wenn Sie aktiviert wurde (Häckchen in einer Activity ), ob der Bildschirm eingeschaltet wurde:

Code:
public class ScreenOnReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) { 
    Intent i = new Intent(context, UpdateService.class);
    context.startService(i);
}


Dieser BroadcastReceiver wird in einem Service, nach dem Setzen des Häkchen, gestartet:

HTML:
public void onCreate() {
    super.onCreate();
    ...
    screenOnReceiver = new ScreenOnReceiver();      
    registerReceiver(screenOnReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
}

Das Problem ist nun, dass der Receiver, bei manchen Benutzer der App, nicht immer reagiert.
Also z. B. nur bei 8 von 10 mal wenn der Bildschirm eingeschaltet wurde, danach reagiert er wohl wieder...
Kann es sein, dass Android den Prozess/Receiver automatisch im Hintergrund beendet nach einer Zeit? Oder woran könnte es liegen?

Jemand eine Idee?
Danke!
 
Ja das wird beendet.
Vorallem wenn das telefon in DeepSleep geht.
daher kann es sein, dass direkt nach dem aussschaltend es Bildschirms beim wieder anschalten es noch funktioniert, wenn das telefon länger aus war nicht mehr.

Ich bin mir gerade nicht sicher, ob man das SCREEN_ON event auch per Manifesteintrag abfangen kann.
Das wäre evtl besser.
 
Danke... Per Manifest geht es definitiv nicht... Hmm... Wie könnte ich das beenden im deep sleep den verhindern?

Und warum funktioniert die app bei mir ohne Probleme (cyanogenmod) und bei anderen Benutzern teilweise nicht?
 
Zuletzt bearbeitet:
Klar funktioniert das so! Nur manchmal und bei bestimmten Leuten halt nicht...

Habe es so implementiert und bei meinem Phone Funktioniert es ja einwandfrei
 
Warum liest du nicht die Doku in der API?

Dort steht, dass der Intent vom System ausgelöst wird, wenn dein Device im interactive state ist. Und der state hat nichts mit den Display zu tun.

Wenn du Glück hast (dein Gerät macht es wohl so), wird das Display gleichzeitig angestellt. Aber nicht alle Geräte funktionieren so.

----

Kann aber auch sein dass die Entwickler von Google nicht wissen, was sie implementiert haben. Wenn es so funktionieren würde, wie du denkst, hättest du wohl kein Problem mit deiner App. ;)
 
Zuletzt bearbeitet:
markus.tullius schrieb:
Dort steht, dass der Intent vom System ausgelöst wird, wenn dein Device im interactive state ist. Und der state hat nichts mit den Display zu tun.

Wenn du Glück hast (dein Gerät macht es wohl so), wird das Display gleichzeitig angestellt. Aber nicht alle Geräte funktionieren so.

Ah ok.. habs auch grad gelesen... ist aber iwie neu der Eintrag, glaube das schon früher nicht da :)
Yo, wurde wohl mit der neusten API (20) eingeführt bzw. geändert... Ab 20 gibt es nun auch getState() und so weiter...
 
Zuletzt bearbeitet:
Hi, sehe es auch gerade, dass die API gerade geändert wurde. ;)

Hatte nur um Kopf, dass die Sache nicht wirklich funktioniert. Wenn ich mich recht erinnere funktionierte das ganze nur, wenn der Prozess der App noch lief.

Für ältere Versionen solltest du den Receiver in einen eigenen Background - Prozess verschieben.
 
Würde es helfen wenn ich die App im Vordergrund halte, so wie es teilweise andere Apps auch machen. Zum Bsp eine Meldung in der Benachrichtigungszeile?
 

Ähnliche Themen

S
Antworten
4
Aufrufe
995
Sempervivum
S
B
Antworten
4
Aufrufe
495
bb321
B
R
Antworten
3
Aufrufe
1.631
Ritartet
R
Zurück
Oben Unten