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?
правый.
Anyway, the problem I have is that my UI-Thread calls createTabContent() in the
TabActivity while the AsyncTask is still busy.
Если вам нужно обновить пользовательский интерфейс, когда AsyncTask все еще работает в фоновом режиме, переопределите AsyncTask.onProgressUpdate (..) и затем вызовите AsyncTask.publishProgress (..) из 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?
Я не понимаю этого. Не могли бы вы объяснить подробнее?
В любом случае, следите за этим:
- Запустите AsyncTask только после полного создания TabActivity. Запустите его из onPostCreate () вместо onCreate (). Это может быть источником вашего исключения NullPointerException.
- Вы можете обновить любые действия из потока пользовательского интерфейса в AsyncTask.onPostExecute (..)
- Если вам нужно обновить пользовательский интерфейс, когда AsyncTask все еще работает в фоновом режиме, то вызовите AsyncTask.publishProgress (..) из AsyncTask.doInBackground (..)