Pergunta

Eu tenho uma TabActivity implementando o TabContentFactory, que inicia um assíncrono no OnCreate () para buscar os dados para as guias. Quando o AsyncTask terminar, o OnPostexecute () poderia atualizar diretamente os elementos da UI, certo? Ou seja, como esse método é executado no U-thread, não seria necessário mais sincronização de threads ao acessar os elementos da UI?

De qualquer forma, o problema que tenho é que meu thread da UI-thread CreateTabContent () na TabActivity enquanto o AsyncTask ainda está ocupado. Eu tenho que adicionar pelo menos uma guia ou recebo uma nullpointerException. Mas como eu só adiciono guias quando minha assíncada terminou e o progressodialog foi demitido?

Eu ficaria feliz se alguém pudesse ajudar ...

Foi útil?

Solução

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?

Certo.

Anyway, the problem I have is that my UI-Thread calls createTabContent() in the
TabActivity while the AsyncTask is still busy.

Se você precisar atualizar a interface do usuário enquanto o AsyncTask ainda estiver em execução em segundo plano, substitua asynctask.onProgressupdate (..) e ligue para asynctask.publishProgress (..) de dentro do assínctask.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?

Eu não entendo isso. Você poderia explicar com mais detalhes?

Enfim, cuidado com isso:

  1. Inicie o assíncrono somente após a criação da TabActividade. Inicie -o no OnPostCreate () em vez de onCreate (). Isso pode ser uma fonte da sua NullPointerException.
  2. Você pode atualizar quaisquer atividades do thread da interface do usuário no assynctask.onpostexecute (..)
  3. Se você precisar atualizar a interface do usuário enquanto o AsyncTask ainda estiver em execução em segundo plano, ligue para asynctask.publishprogress (..) de dentro do assínctask.doinbackground (..)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top