Android: TabActivity - añadir aquí no ha terminado antes de AsyncTask
-
25-09-2019 - |
Pregunta
Tengo una TabActivity implementar TabContentFactory, que inicia una AsyncTask en onCreate () para recuperar los datos de las fichas. Cuando el AsyncTask ha terminado, onPostExecute () podría actualizar directamente a la interfaz de usuario-elementos, ¿verdad? Significado, ya que las carreras de método en la interfaz de usuario de rosca sería necesario ningún hilo-sincronización adicional cuando se accede a la interfaz de usuario elementos?
De todos modos, el problema que tengo es que mi IU-Thread llama createTabContent () en el TabActivity mientras que el AsyncTask todavía está ocupado. Tengo que añadir al menos una lengüeta o recibo una NullPointerException. Pero, ¿cómo qué sólo añadir pestañas cuando mi AsyncTask ha terminado y el ProgressDialog ha sido despedido?
Yo estaría contento si alguien podría ayudar ...
Solución
When the AsyncTask has finished, onPostExecute() could directly update the
UI-elements, right? Meaning, since that method runs in the UI-Thread no further
thread-synchronization would be required when accessing UI-elements?
derecho.
Anyway, the problem I have is that my UI-Thread calls createTabContent() in the
TabActivity while the AsyncTask is still busy.
Si necesita actualizar la interfaz de usuario, mientras que AsyncTask todavía se está ejecutando en segundo plano, y luego anular AsyncTask.onProgressUpdate (..) y luego llamar AsyncTask.publishProgress (..) desde dentro de la AsyncTask.doInBackground (..).
I have to add at least one tab, or I get a NullPointerException. But how do I
only add tabs when my AsyncTask has finished and the ProgressDialog has been
dismissed?
No entiendo esto. Podría explicar con más detalle?
De todos modos, este reloj de cosas:
- Inicio AsyncTask sólo después TabActivity está totalmente creado. Iniciarlo desde onPostCreate () en lugar de onCreate (). Esto podría ser una fuente de tu NullPointerException.
- Puede actualizar cualquier actividad de hilo de interfaz de usuario dentro de AsyncTask.onPostExecute (..)
- Si necesita actualizar la interfaz de usuario, mientras que AsyncTask todavía se está ejecutando en segundo plano, a continuación, llamar AsyncTask.publishProgress (..) desde dentro de la AsyncTask.doInBackground (..)