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 ...

¿Fue útil?

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:

  1. 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.
  2. Puede actualizar cualquier actividad de hilo de interfaz de usuario dentro de AsyncTask.onPostExecute (..)
  3. 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 (..)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top