W tym samym czasie wykonywane są dwa różne AsyncTasks
Mam dwie różne implementacjeAsyncTask
, powiedzmyAT1
iAT2
.
AT1
jest najpierw wykonywaneAT2
jest wykonywany.AT1
czeka wdoInBackground
aż doAT2
wykonał swoje zadanie odpytując te dane co 500 ms. Ale to się nigdy nie zdarza.
Tak więc zasadniczo chcę to:
Ale wydaje się, że tak się dzieje:
Z wyjątkiemAT1
nigdy się nie kończy iAT2
nigdy się nie zaczyna.
Czy mogę w jakiś sposób zmusić tych dwóchAsyncTask
s do wykonania na dwóch osobnych wątkach lub czy istnieje inne rozwiązanie tego problemu?
Nie ma możliwości pierwszego uruchomieniaAT2
i po tym wykonajAT1
.
EDYTOWAĆ
Dla wyjaśnienia:AT1
jest wykonywany, gdy użytkownik otworzy określony ekran i musi pobrać dane dla tego ekranu w oparciu o lokalizację.AT2
jest wykonywany po zmianie lokalizacji, a kiedy to się dzieje, wykonywane są pewne obliczenia, których nie można wykonać w wątku interfejsu użytkownika.
GdyAT2
nigdy nie został wykonany,AT1
nie ma lokalizacji do pobierania danych, więc musi czekaćAT2
skończyć. GdyAT2
ma wykonane, dane o lokalizacji już tam są iAT1
nie musi czekać.
Ponadto ten problem występuje w ICS, a nie w Android 2.3, jakta odpowiedź wskazuje.