używam AsyncTask przesłać dane do interfejsu użytkownika. Napisałem kod do pobrania danych z serwera w osobnej metodzie i wywołuję tę metodę z doinBackground. To spowoduje błąd, ponieważ metody interfejsu użytkownika nie mogą uzyskać dostępu z doInBackground.but, chcę uzyskać dostęp. jest jakikolwiek alternatywny proces dostępu do metody UI z doinBackground.?Android: Wywoływanie metod na wątku UI z metodą AsyncTask doInBackground
Odpowiedz
alternatywa proces jest tam, aby uzyskać dostęp do metody UI z doinBackground.?
Zadzwoń pod publishProgress()
w doInBackground()
. Umieść swoją logikę aktualizacji interfejsu użytkownika pod numerem onProgressUpdate()
swojego AsyncTask
. onProgressUpdate()
będzie wywoływana w głównym wątku aplikacji (a.k.a., gwint UI) po wywołaniu publishProgress()
. Here is a sample project demonstrując to.
połączeń runOnUiThread (działanie Runnable)
hi mogę zadzwonić runOnUiThread() z doInBackground.? To będzie działać.? Lub jak zwykle mogę zadzwonić runOnUiThread z OnCreate sobie.? Tutaj mam jedną wątpliwość. RunOnUiThread zablokuje chwilę UI przesyłanie danych.? –
ma sens, gdy wywołasz go z doInBackground() .. lub nie ma znaczenia .. – ngesh
musisz napisać runOnUIThread gdzie aktualizujesz swój główny interfejs użytkownika –
Jak inni zwrócili uwagę, można użyć runOnUiThread. Ale wydaje się to trochę dziwne, że chciałbyś to zrobić na swoim doInBackground. Jeśli chcą, aby wskazać postępu dla użytkownika, co chcesz z tym poradzić w AsyncTask.onProgressUpdate i nazywają publishProgress w doInBackground.
Możesz przeczytać więcej o AsyncTask tutaj: http://developer.android.com/reference/android/os/AsyncTask.html
-Dan
Zastosowanie doInBackground()
tylko dla zadań, które:
- trochę potrwać
- UI nie są związane
Wtedy można wdrożyć AsyncTask.onPostExecute()
uruchomić kod, aby obsłużyć te wyniki na głównym wątku UI od AsyncTask
Z JavaDoc dla AsyncTask.onPostExecute()
:
„działającego w wątku UI po doInBackground. ... "
- 1. Android AsyncTask - dlaczego nie wykonano metody doInBackground()?
- 2. Wywoływanie metod @Transactional z innego wątku (Runnable)
- 3. Android Thread.sleep() w AsyncTask zamrozić UI
- 4. Jak wyświetlić toast w AsyncTask na stronie doInBackground
- 5. android - wywoływanie wątku interfejsu użytkownika z wątku roboczego
- 6. Android: Metoda doInBackground Asynctask jest wywoływana po długim opóźnieniu
- 7. Narzędzie do debugowania Android Studio dla kodu doInBackground zestawu AsyncTask
- 8. Parametry AsyncTask doInBackground a parametry konstruktora
- 9. Usługa Android i wątku UI
- 10. android AsyncTask z działalności cyklu
- 11. Asynctask: przekazanie dwóch lub więcej wartości z doInBackground do onPostExecute
- 12. Wywoływanie metod w kontekście QThread
- 13. Android: wywoływanie metod niestandardowych w ContentProvider
- 14. Android AsyncTask wewnątrz AsyncTask
- 15. Android AsyncTask i SQLite DB instancja
- 16. C#: Pokaż okno dialogowe na wątku UI z innego wątku
- 17. Android AsyncTask nie dzwoni naPostExecute
- 18. Dlaczego AsyncTask działa w głównym wątku aplikacji?
- 19. Android, AsyncTask, sprawdź status?
- 20. Jak przekazywać dane z AsyncTask do Ui Wątek
- 21. Czy Android AsyncTask doInBackground może być zsynchronizowany w celu serializacji wykonania zadania?
- 22. Android AsyncTask zwraca wiele wartości w doInBackground do użycia w onPostExecute
- 23. Co naprawdę oznacza "działa na wątku UI" dla onPostExecute()?
- 24. Wywoływanie metod modułu nadrzędnego z zagnieżdżonej klasy
- 25. Wywoływanie metod przechwytywania w Javie
- 26. Magiczne wywoływanie metod w Javie
- 27. Wywoływanie metod php ze stringami
- 28. Android AsyncTask jako argument metody
- 29. implementacja AsyncTask w Fragmentach android
- 30. Wywoływanie metod z opcjonalnymi parametrami za pomocą refleksji
Niskie imię wystarczy. +1. –
+1 dla jasnej odpowiedzi –
znał runOnUiThread() sposób, ale podobał mi się inny approachj manipulacyjnych to +1. – Deva