Uso de un wakelock en un servicio Android 1.5

Hola Estoy intentando utilizar un servicio para controlar un wakelock así que puedo dejar permanentemente la pantalla encendido cuando mi uso está funcionando. Creo el wakelock y lo activo en onCreate () y lo libero en onDestroy () sin embargo consigo el error "wl no se puede resolver". ¿Puede alguien explicar cómo puedo superar esto? Código abajo:

public class WakeLockService extends Service { @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); wl.acquire(); } @Override public void onDestroy() { wl.release(); } } 

¿No te estás perdiendo la línea

  PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); 

En onDestroy ()? Es una variable local en onCreate (), pero no se declara en onDestroy () en absoluto.

O, más probable, puede que desee convertirlo en un campo de clase WakeLockService en lugar de una variable local.

Bueno, incluso si usas una variable de instancia, creo que esta no es la manera de hacerlo. ¿Quién va a llamar a destroy() ? Espero que no, es el trabajo de OS para hacerlo. Pero cuando usted está sosteniendo un bloqueo de la estela es altamente inverosímil que su método del destroy() consigue llamado, porque el OS primero destruirá otras actividades / servicios.

Además de eso, es demasiado tarde para adquirir el bloqueo de la onCreate() en el método onCreate() . Antes de que onCreate() se haya alcanzado, es posible que el teléfono se haya onCreate() cuando dispara el servicio desde una alarma vs. una actividad que está en segundo plano.

Es difícil decir lo que debe hacer diferente, ya que no dan mucho contexto. El curso habitual de los acontecimientos es éste. A BroadcastReceiver se llama y en el onReceive() usted adquiere el bloqueo de la estela y lo pone en una variable estática en su servicio. Cuando se realiza el servicio, debe llamar a stopSelf() , liberar el bloqueo de despertador y luego anular la variable estática que mantiene una referencia al bloqueo.

Además, si utiliza un servicio de bloqueo de una vigilia completa es muy probable que no lo que desea, pero un bloqueo de la sesión es. No necesitas la pantalla para quedarte, ¿verdad?

Lo sentimos, pero los bloqueos de despertar son realmente complicados de usar, debido a exactamente los problemas que he descrito anteriormente. Es definitivamente un tema avanzado y es fácil de joder. Si lo hace, su aplicación obtendrá comentarios muy feo, porque sostener durante demasiado tiempo es una ofensa mayor ya que drena la batería. No tome esto por el camino equivocado por favor, pero dada la naturaleza del problema que publicó aquí (error de sintaxis / compilador), sugeriría fuertemente que busque una solución sin un servicio y bloqueo de la sesión.

  • Phonegap / Cordova Paquetes de aplicaciones en Jelly Bean - Access-Control-Allow-Origin y setAllowUniversalAccessFromFileURLs
  • Android en las donaciones de aplicaciones
  • Juego de desplazamiento lateral de Java en android
  • No se invoca el método Java cuando se llama desde pthread nativo
  • Java (Android) reordenando una lista de objetos
  • Cómo deshabilitar Android LocationListener cuando se cierra la aplicación
  • Cómo calcular el tamaño de un archivo en Android
  • Svg archivos de representación en android
  • Reaccionar nativa Android SyntaxError: Se ha intentado redefinir la propiedad 'clave'
  • Integración de Google Drive con la actividad actual
  • ¿Cómo comprobar si un servicio ya se está ejecutando o no en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.