Problem jest najprawdopodobniej uruchamiany na ekranie powitalnym ( zakładam, że jakiś dialog taki jak ProgressDialog ) w tym samym wątku, co cała wykonywana praca. Dzięki temu widok ekranu powitalnego nie będzie aktualizowany, co może uniemożliwić nawet wyświetlenie go na ekranie. Musisz wyświetlić ekran powitalny, uruchomić wystąpienie AsyncTask, aby pobrać wszystkie swoje dane, a następnie ukryć ekran powitalny po zakończeniu zadania.
Zatem metoda onCreate () Twojego działania po prostu utworzy ProgressDialog i wyświetli go. Następnie utwórz AsyncTask i uruchom go. Uczyniłbym AsyncTask klasą wewnętrzną twojego głównego działania, aby mógł przechowywać dane, które pobrał w jakiejś zmiennej w twoim działaniu i zamknąć ProgressDialog w swojej metodzie onPostExecute ().
Nie jestem pewien, jak rozwinąć więcej bez pokazywania kodu, więc oto jest:
public class MyActivity extends Activity {
private ProgressDialog pd = null;
private Object data = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
new DownloadTask().execute("Any parameters my download task needs here");
}
private class DownloadTask extends AsyncTask<String, Void, Object> {
protected Object doInBackground(String... args) {
Log.i("MyApp", "Background thread starting");
return "replace this with your data object";
}
protected void onPostExecute(Object result) {
MyActivity.this.data = result;
if (MyActivity.this.pd != null) {
MyActivity.this.pd.dismiss();
}
}
}
}
Oczywiście jest kilka elementów, które musisz tam wypełnić, ale ten kod powinien działać i dać ci dobry punkt wyjścia (wybacz mi, jeśli jest błąd kodu, nie mam dostępu do Android SDK, gdy to piszę w tej chwili).
Więcej dobrych lektur na temat AsyncTasks w systemie Android można znaleźć tutaj i tutaj .