He convertido mi AsyncTask
en un AsyncTaskLoader
(principalmente para hacer frente a los cambios de configuración). Tengo un TextView
que estoy usando como estado de progreso y estaba usando onProgressUpdate
en el AsyncTask
para actualizarlo. No se ve como AsyncTaskLoader
tiene un equivalente, por lo que durante loadInBackground
(en el AsyncTaskLoader
) estoy usando esto:Actualizar la interfaz de usuario de un AsyncTaskLoader
getActivity().runOnUiThread(new Runnable() {
public void run() {
((TextView)getActivity().findViewById(R.id.status)).setText("Updating...");
}
});
estoy usando esto en un Fragment
, razón por la que estoy usando getActivity()
. Esto funciona bastante bien, excepto cuando ocurre un cambio de configuración, como cambiar la orientación de la pantalla. Mi AsyncTaskLoader
sigue en ejecución (por lo que estoy usando un AsyncTaskLoader
), pero el runOnUiThread
parece omitirse.
No estoy seguro de por qué se salta o si esta es la mejor manera de actualizar la interfaz de usuario de AsyncTaskLoader
.
ACTUALIZACIÓN:
acabé volviendo de nuevo a un AsyncTask
ya que parece más adecuado para las actualizaciones de la interfaz de usuario. Desearía poder fusionar lo que funciona con un AsyncTask
con un AsyncTaskLoader
.
Creo que este es un truco muy inteligente. Nunca pensé en ello. Estaba buscando la manera de enviar mis actualizaciones de progreso usando cargadores. Voy a intentarlo y dejarte saber. ¡Creo que tu solución debería funcionar! – douggynix
El enlace parece haber ido mal. [Aquí] (https://yadi.sk/d/qovznXrpUbbum) está funcionando (creo que es lo mismo). – EmmanuelMess