Las operaciones de red en Appwidget: Android
-
30-09-2019 - |
Pregunta
Estoy desarrollando una AppWidget Android para mi aplicación. Para actualizar mi appwidget que necesito para la descarga de datos desde la red. Pero cuando trato de hacerlo en el método onUpdate, mi appWidget es matado por el sistema Android. He aprendido que el tiempo que consumen las operaciones no se pueden realizar en los receptores por lo que puso en marcha un servicio de onUpdate método y puso en marcha un hilo de eso. Pero aún así el problema persiste. ¿Puede alguien por favor hágamelo saber cómo hacer las operaciones de la red en Appwidget?
Solución
delegar el trabajo de descarga para un servicio, probablemente un IntentService
, posiblemente un WakefulIntentService
dependiendo si existe un riesgo de que el dispositivo podría quedarse dormido durante el trabajo en sí mismo.
Su AppWidgetProvider
simplemente llamaría startService()
en su IntentService
.
Su método IntentService's
onHandleIntent()
haría el trabajo que tiene actualmente en onUpdate()
, conseguir su propia AppWidgetManager
a través del método getInstance()
estática. Pero, puesto que onHandleIntent()
se ejecuta en un subproceso en segundo plano, se puede tomar tanto tiempo como sea necesario. El IntentService
también se apagará automáticamente una vez que se hace con todas las solicitudes de trabajo excepcional.