2010-06-10 8 views
8

Sprawdziłem Android API i inne posty tutaj na stackoverflow, ale nie byłem w stanie tego wykombinować.Android: pokazujące okno dialogowe postępu

Moja aplikacja pobiera pliki na kartę SD. Chciałbym otworzyć okno "ładowanie ..." podczas pobierania pliku, a następnie zniknąć po zakończeniu pobierania. Oto, co wymyśliłem przy użyciu interfejsu API Android:

ProgressDialog pd = ProgressDialog.show(this,"","Loading. Please wait...",true); 

//download file 

pd.cancel(); 

jednak okno dialogowe nie wyświetla się. kiedy debuguję to, twierdzi, że to pokazuje, ale oczywiście nie jest na ekranie.

co mogę zrobić?

+0

Czy kod pobierania jest uruchamiany w oddzielnym wątku? –

+0

nie działa w tym samym wątku, co działanie. – mtmurdock

+0

To jest problem :) –

Odpowiedz

3

Musisz uruchomić kod pobierania w oddzielnym wątku. Prosty sposób jest użycie AsyncTask

Zobacz również this article, w jaki sposób używać go

+0

Właściwie to miałem spotkanie, na którym rozmawialiśmy o wątkach i zrozumiałem. Musiałem również umieścić go w oddzielnej działalności, więc moja aplikacja nie próbowałaby załadować pliku przed zakończeniem działania pobierania. dzięki za pomoc! masz obracające się koła. – mtmurdock

2

Mam nieco podobny scenariusz, bardziej pauzy poziom załadunku natomiast rzeczy jest bycie konfiguracji dla fazy stadionie. I otworzyć okno, start poziom załadunku w wątku, który jest przekazywany kontekst i nazywają to na koniec wątku:

mContext.runOnUiThread(new Runnable(){ 
    public void run() { 
     mContext.mProgressDialog.dismiss(); 
    } 
}); 

znajdę sposób runOnUiThread() bardzo przydatne.