Cómo solicitar un IntentService para obtener información sobre su cola
Tengo un IntentService que las colas encima de las llamadas del servicio de la tela que necesitan ser hechas a mi servidor de la tela. Por lo tanto, cada Intención es una llamada de servicio web a realizar.
Me gustaría establecer algo donde mi aplicación puede preguntar a este IntentService si tiene algún Intents que contenga una pieza de datos en particular (IE: "¿Ya está esperando para pedir a la nube datos x? ¿O tengo que decirle que ¿hazlo?").
- BindService () devuelve false pero unbindService () necesita ser llamado?
- Detener el servicio en android
- Error "No se puede iniciar el servicio de intención" al iniciar el servicio desde una actividad en Android
- Android: cómo obtener la intención recibida por un servicio?
- Android: Multithreading-Bluetooth SPP / RFCOMM-Cómo mantener activo mi BluetoothSocket y OutputStream al cambiar Actividades
¿Hay alguna sugerencia sobre cómo puedo extender IntentService para hacer esto? ¿Se puede recorrer la cola de Intent de un IntentService? ¿O necesitaría tomar el código de IntentService y modificarlo?
La única otra idea que tengo es agregar una tabla a la base de datos y registrar qué llamadas están en la cola, con cada registro que se quita de la tabla cuando esté terminado.
- Mantener un servicio en ejecución aunque la aplicación esté cerrada.
- Background Servicio con Firebase childeventlistener no funciona después de unos minutos
- Ayúdame a usar correctamente los Servicios y los Hilos
- Conexión TCP mediante Service
- Servicio Android android.os.BinderProxy error
- La notificación push funciona incorrectamente cuando la aplicación está en segundo plano o no se está ejecutando
- Servicio de primer plano que se está matando en el clic de notificación
- Cómo evitar el servicio de asesinato del sistema cuando se cancela la aplicación / actividad
¿Hay alguna sugerencia sobre cómo puedo extender IntentService para hacer esto? ¿Se puede recorrer la cola de Intent de un IntentService? ¿O necesitaría tomar el código de IntentService y modificarlo?
Probablemente este último, si realmente desea examinar la cola real. IntentService
convierte los Intents
en mensajes en la cola de mensajes de un Looper
través de un HandlerThread
. Sin embargo, nada de eso está expuesto a través del SDK. Afortunadamente, IntentService
es bastante corto – ni siquiera 150 líneas. Usted podría clonarlo en su propio paquete y hacer las modificaciones según lo necesitado. Simplemente ejecute un diff en la fuente cuando se publiquen nuevas actualizaciones de código fuente en el repositorio de AOSP, por lo que sabe si Google realizó alguna cirugía mayor en IntentService
sí que pueda aprovechar.
La única otra idea que tengo es agregar una tabla a la base de datos y registrar qué llamadas están en la cola, con cada registro que se quita de la tabla cuando esté terminado.
Ni siquiera tendría que ser persistente, ya que la propia cola de IntentService
no es persistente. Simplemente mantenga su propia cola FIFO en onStartCommand()
, encadenando a la superclase y haciendo estallar su Intent
fuera de la cola al final de onHandleIntent()
. Esto tiene una posibilidad de salir de la sincronización con la cola maestra (por ejemplo, usted querrá utilizar finally
para asegurarse de que pop el trabajo fuera de su propia cola), pero no tendría que clonar la clase.
Otra solución podría ser resolverlo reemplazando onStartCommand.
Aquí está una solución lisa en la que encontré inspiración para un problema similar 🙂
- Configuración de Android LinearLayout de fondo mediante programación
- Android: ¿Ajusta la pantalla cuando aparece el teclado?