tutorial - servicios en segundo plano android studio
Asynctask en Fragmento o Actividad principal? (3)
Me gustaría ir con el método 2, pero dar un paso más.
Tenga un fragmento separado para ejecutar su tarea asincrónica. De esta forma, puede manejar cualquier cambio de configuración (no solo la rotación de la pantalla) sin problemas.
En otro fragmento, puede visualizar los datos. Puede pasar los datos de su fragmento de tarea asíncrono mediante devoluciones de llamada a la actividad y hacer que la actividad invoque un método en el fragmento de visualización para actualizar los datos.
Tengo un escenario y no estoy seguro de qué camino tomar.
Guión
La aplicación tiene una actividad de Inicio que muestra varios fragmentos. Los datos en los fragmentos pueden provenir de la web o de una base de datos local y se recuperan utilizando una asynctask.
Por lo que vi, tengo 2 alternativas:
Ponga Asynctask en actividad primaria y luego use
fragment.newInstance(parameters)
para pasar el resultado al fragmento. Sin embargo, si en mi asynctask necesito actualizar el progreso o alguna información sobre el fragmento, cada vez tendré que llamar a newInstance con el nuevo conjunto de parámetros.Agregue el fragmento y coloque la asynctask en él, de esta manera, cuando se necesite progreso, puedo actualizar las vistas del fragmento, ya que tengo acceso a ellas + cuando se realiza la asynctask, puedo llenar la lista con la información.
¿Cuál sería el enfoque correcto?
LE: en realidad para el punto 1 para actualizar el fragmento, puedo llamar a los métodos públicos del fragmento después de encontrarlo con findFragmentById
en la actividad principal
Me gustaría ir con el segundo enfoque.
Sin embargo, mi principal razón sería evitar los problemas que pueden ocurrir en el cambio de orientación de la pantalla mientras el AsyncTask está funcionando.
Una forma mejor si tiene varias tareas sería usar un IntentService: http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/
Tendrás un mejor control sobre lo que estás solicitando y lo que quieres cancelar.