Tengo un widget que necesita realizar una operación potencialmente de larga ejecución en onUpdate(). solo realizar la operación resultó directamente en ANR. para resolver esto, mi primer intento fue crear un hilo en el mismo. Noté que el widget no se actualizaría en algunos casos. mi suposición aquí es que una vez que onUpdate() se cierra, android puede matar el proceso junto con el hilo inacabado.android operación de larga duración para actualizar un appwidget
mi próximo intento fue crear un servicio intencionado. el widget onUpdate() solo inicia el servicio de intención, que hace el trabajo directamente y actualiza el widget cuando termina. esto funciona, pero para mi sorpresa, parece que onHandleIntent() tiene un solo subproceso. si tengo dos widgets, y luego ambos actualizo e inicio el servicio de intento, se actualizan secuencialmente ...
el caso de los dos widgets no es realmente importante, pero me pregunto sobre una mejor práctica para este tipo de patrón .
para resolver el caso de dos widgets terminé actualizando todas las instancias de widgets con los mismos datos cada vez que se hace clic en alguno de ellos. Por ejemplo, realizo el proceso de larga ejecución una vez y aplico los resultados a todas las instancias de widgets. en mi caso esto no importa, pero para muchos widgets podría ser importante no hacer eso.
thoughts?
está bien si lo entiendo correctamente. 1) widget inicia el servicio intencionado para obtener datos y actualizar el widget cuando está hecho 2) el servicio intenta obtener un bloqueo de activación, y comienza un hilo para hacer el trabajo real, y luego actualiza el widget cuando está hecho 3) cuando termina el hilo, lo libera La cerradura. chico que suena complicado. ¿Por qué no puedo simplemente bloquear un bloqueo en la aplicación de texto HANDLEIntent()? –
@ farble1670: Porque el dispositivo podría quedarse dormido antes de llegar allí. – CommonsWare
lo siento, quise decir agarrar un candado enHandleUpdate(), en el appwidget impl. ¿Qué me permite enviar la solicitud a un servicio intencionado? –