J'ai un problème d'acquisition d'un wakelock. Cela semble ne pas fonctionner. J'essaie d'acquérir un complété_wake_lock, mais aucun que l'affichage n'est activé, ni mon application n'est capable d'effectuer des tâches.
J'utilise la permission suivante: android.permission.wake_lock p>
Mon code d'acquisition ressemble à ceci : P>
PowerManager pm = (PowerManager) getBaseContext().getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "My Tag"); wl.acquire();
3 Réponses :
Où acquérez-vous la serrure de réveil? Vous devrez l'acquérir dans le récepteur de l'intention, pas dans le service / activité que votre intention commence. P>
Je l'acquérir dans une anctivité car j'ai une activité définie comme récepteur
Je ne suis pas sûr de comprendre. Une activité ne peut pas être une radiodifférieur car le Broadcastructeur est une classe abstraite et non une interface (sans héritage multiple en Java). Voulez-vous dire que vous avez une radiodifférière statique privée sur la classe d'activité? Tout ce que je dis, c'est que vous devez prendre la serrure de réveil à ONreceive () dans le Broadcasteceiver non pas dans Oncrate () de l'activité que vous commencez à partir du service.
Wakelock est une manière inefficace de garder l'écran sur. Utilisez plutôt le WindowManager pour faire la magie. La ligne suivante suffira à la wakelock. La permission de Wakelock est également nécessaire pour que cela fonctionne. De plus, ce code est efficace que le wakelock.
getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
Dans mes tests, cela ne fonctionne que si vous l'appelez dans la méthode Oncreate de l'activité. Par exemple. Si vous ajoutez Flag_keep_screen_on dans Oncreate, essayez de le supprimer ultérieurement, il n'y a aucun effet et vice versa. Testé sur ICS 4.0.3
Vous pouvez l'utiliser n'importe où. Vous devez utiliser le contexte.
<uses-permission android:name="android.permission.WAKE_LOCK" />
Vous devrez définir Lock_Name_Static pour utiliser le code ci-dessus. Par exemple. String Statique privé Lock_Name_Static = "mywakelock";