¿Es posible tener varias cerraduras de la estela?

Estoy desarrollando una pequeña aplicación de utilidad que escanea códigos de barras 2D, y luego envía cada código de barras a un IntentService donde se realiza una tarea más larga.

Cuando la actividad se muestra, debe evitar que el dispositivo de dormir, hasta que el código de barras se procesa en el servicio. Si el servicio termina el proceso, se detiene, pero la actividad debe seguir siendo visible.

Me gustaría tener un SCREEN_DIM_WAKE_LOCK WakeLock durante el ciclo de vida de la actividad, pero como este tipo no impide que la CPU de dormir, también tendría que adquirir un PARTIAL_WAKE_LOCK en la actividad cuando un nuevo código 2D es escaneado, y lo liberan En el servicio de intención después de haber sido procesado.

El propósito de SCREEN_DIM_WAKE_LOCK es evitar al usuario el inconveniente de presionar el botón de encendido cada pocos segundos para despertar el dispositivo y poder leer un nuevo código de barras. El usuario tendrá que leer un gran número de códigos uno tras otro y la actividad debe estar alrededor incluso para los intervalos cortos donde no hay interacción del usuario.

Sé que en Android no hay una garantía del 100% de que la aplicación esté en la parte superior, no cerrada o puesta en primer plano debido a varias condiciones que mi aplicación no puede controlar, pero me gustaría ir tan lejos como pueda.

Así que es posible celebrar múltiples WakeLocks? ¿Dónde podrían declararse accesibles tanto por la actividad como por el servicio? (Singleton, aplicación extendida?)

One Solution collect form web for “¿Es posible tener varias cerraduras de la estela?”

Es posible mantener varios WakeLocks. De hecho, se hace todo el tiempo cuando varias aplicaciones se sincronizan al mismo tiempo cuando la pantalla está apagada. (Imagina que tu GMail y sincronización de aplicaciones de Facebook al mismo tiempo cuando la pantalla está bloqueada.No saben unos de otros tendrá WakeLocks diferentes.Puede o no ser diferentes tipos de WakeLocks)

Android se asegurará de que todas las expectativas se cumplan (máximo drenaje de la batería en otras palabras.)

En mi opinión, creo que estás pensando demasiado en el hecho de que necesitas un SCREEN_DIM_WAKE_LOCK ya que esto puede drenar accidentalmente MUCHA batería, pero puedo estar equivocado dependiendo de tu caso de uso.

Así que la respuesta corta es SÍ. Puede mantener varios WakeLocks y Android (debería) actuar como se esperaba. La única cosa a tener en cuenta es que liberar ambos Wakelocks correctamente.

En el tema de subir a la pantalla, creo que deberías liberar el WakeLock de tu actividad cuando vaya al estado Pausado (cuando de alguna manera otra actividad esté en la parte superior, o usar intencionalmente el botón de encendido). Porque en este momento, el usuario está interactuando con otra aplicación, y debe respetarla y dejarla controlar su propio comportamiento. Usted no tiene que renunciar a la vigilia parcial de su servicio hasta que haya terminado.

Espero que esto ayude.

  • ¿Cómo deshabilitar el botón de encendido?
  • ¿Cómo usar Wake Lock para android mediaplayer?
  • Preguntas para principiantes: Wakelocks
  • Android - ¿Cómo puedo despertar el teléfono de un sueño duro para tomar una foto?
  • Despierta Android Phone / tablet?
  • Android no recibe actualizaciones de ubicación cuando la pantalla está bloqueada
  • AlarmManager y WakeLock
  • ¿Un GCM-App realmente necesita un wakelock?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.