Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


OnCreateView () espera que AsyncTask se ejecute?

Aquí está mi situación:

En mi onCreate() , me gustaría crear un AsyncTask para recuperar datos de un servidor y almacenarlo en un ArrayList .

Entonces en mi onCreateView() , me gustaría poner los datos en un ListView , establecer un onItemClickListener , etc …

El problema es que estoy creando una carrera entre el AsyncTask y el subproceso de interfaz de usuario. Si el onCreateView() se llama antes de que el AsyncTask se AsyncTask recuperar, entonces no configuro el adaptador correctamente, no establezco onItemClickListener , etc …

Quisiera alguna manera de cerciorarse de que espero que el AsyncTask termine de ejecutar antes de comenzar la función onCreateView() . es posible? He leído sobre el uso de get() en la tarea, pero tuve algunos problemas para ejecutarlo. No parecía estar haciendo nada.

La razón por la que me gustaría recuperar los datos en onCreate() y establecer el adaptador en onCreateView() (en lugar de configurar el adaptador en onPostExecute() de AsyncTask ), es que me gustaría recuperar los datos una vez, y ser capaz Para crear la vista si el usuario gira la pantalla o navega de nuevo a ese Fragment .

  • ¿Es mejor usar AsyncTask o Service para cargar un archivo en segundo plano?
  • Retrofit 2 mejor práctica para android: solicitud asincrónica o solicitud síncrona en AsyncTask?
  • AsyncTask y Contextos
  • ¿Cómo puedo reutilizar una clase interna en Java / Android?
  • AsyncTask dentro de un método estático - Buena práctica de codificación?
  • RxJava Async tarea en Android
  • Cambiar la orientación de la orientación con AsyncTask
  • Android: el método doInBackground de Asynctask se llama después de un largo retraso
  • 3 Solutions collect form web for “OnCreateView () espera que AsyncTask se ejecute?”

    Aquí está una manera mejor. Inicialice su ListView e inicie su AsyncTask en onCreate() . Una vez que los datos están disponibles en el servidor, se agrega a la misma matriz que se le dio a su adaptador y llamar a notifyDatasetChanged() de su adaptador, que se encarga de poblar su vista de lista. Aquí también puede utilizar ListFragment en el que puede llamar a setEmptyText() para agregar texto que se muestra si su lista está vacía.

    Debes seguir la respuesta de @ sujith y cambiar tu implementación, pero aquí tienes una respuesta a tu pregunta específica:

    Quisiera alguna manera de cerciorarse de que espero que el AsyncTask termine de ejecutar antes de comenzar la función onCreateView (). es posible?

    Sí, esto es posible, pero evitará que la interfaz de usuario aparezca mientras espera que termine la tarea.

    Cree y ejecute su AsyncTask luego mantenga la referencia a ella:

     MyAsyncTask mTask; ... ...onCreate() mTask = new MyAsyncTask(); mTask.execute(); ... ...onCreateView() myInfo = mTask.get(); super.onCreateView(). 

    En su caso, esto es una mala idea, sin embargo, hay momentos en que puede que tenga que hacer algo como esto.

    EDIT: mTask.get() devolverá lo que sea devuelto por el doInBackground()

    Sea lo que sea que esté haciendo en onCreateView() , muévalo a onViewCreated()

    onViewCreated se invoca después de que la vista esté lista para que no tenga problemas entonces

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.