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 servicio de intención donde se realiza una tarea más larga.¿Es posible sostener múltiples Wake Locks?
Cuando se muestra la actividad, debe evitar que el dispositivo entre en suspensión, hasta que el código de barras se procese en el servicio. Si el servicio finaliza el procesamiento, se detiene, pero la actividad aún debe estar visible.
Me gustaría mantener un SCREEN_DIM_WAKE_LOCK WakeLock durante el ciclo de vida de la actividad, pero como este tipo no impide que la CPU duerma, también necesitaría adquirir un PARTIAL_WAKE_LOCK en la actividad cuando se escanea un nuevo código 2D , y libérelo en el servicio intencionado después de que haya sido procesado.
El propósito de SCREEN_DIM_WAKE_LOCK es evitar al usuario la inconveniencia de presionar el botón de encendido cada pocos segundos para reactivar el dispositivo y poder leer un nuevo código de barras. El usuario tendrá que leer una gran cantidad de códigos, uno tras otro, y la actividad debería estar presente incluso durante los breves intervalos en los que no hay interacción del usuario.
Sé que en Android no hay garantía del 100% de que la aplicación esté en la parte superior, no cerrada o orientada debido a varias condiciones que mi aplicación no puede controlar, pero me gustaría llegar lo más lejos que pueda.
¿Es posible mantener varios WakeLocks? ¿Dónde podrían declararse accesados tanto por la actividad como por el servicio? (Singleton, ¿extiende la Aplicación?)
+1. Pero estoy lanzando la pantalla WakeLock en 'onStop', porque no quiero que duerma cuando presiono un cuadro de diálogo. –
Supuse que cuando un cuadro de diálogo está en el frente, ya no está escaneando códigos de barras, porque el usuario tiene que responder al diálogo, ¿no está bien dejar que el sistema duerma, si el uso no responde al diálogo a tiempo? – Madushan
Sí, bueno, todo depende de cuánto tiempo tome el temporizador de reposo. Si lleva 3 segundos, es molesto presionar el botón de encendido. Si lleva más tiempo, estoy de acuerdo. Dependiendo de la carga de trabajo, incluso podría volcar el bloqueo de la pantalla. –