2012-01-03 23 views
7

Mam ten sam problem Running multiple AsyncTasks at the same time -- not possible? oprócz tego, że używam Androida 4.0 z Androidem: minSdkVersion = "14".Android asynctask w tym samym czasie nie jest możliwy

Próbowałem za jego przykładem i uzyskać także:

bar bar bar 
bar bar bar 
bar bar bar 

EDIT:

znalazłem rozwiązanie here

Zamiast używać:

task.execute(); 

zastosowanie:

task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null); 
+0

Proszę rozważyć dodanie swojej duszy jako odpowiedzi i zaakceptowanie jej, aby pytanie to nie pojawiło się już jako bez odpowiedzi. Przekażę twoją odpowiedź, jeśli to zrobisz. . –

Odpowiedz

6

Brzmi to wszystko wyjaśnia (od documentation):

Kiedy po raz pierwszy wprowadzony, AsyncTasks były wykonywane szeregowo na jednym wątku tła. Począwszy od DONUT, zmieniono to na pulę wątków umożliwiającą równoległą pracę wielu zadań. Począwszy od HONEYCOMB, zadania są wykonywane na pojedynczym wątku, aby uniknąć typowych błędów aplikacji spowodowanych wykonywaniem równoległym.

Jeśli naprawdę chcesz wykonanie równoległe, możesz wywołać executeOnExecutor (java.util.concurrent.Executor, Object []) za pomocą THREAD_POOL_EXECUTOR.

+2

A z przykładu kodu, zamiast nazywać 'myAsyncExtendingClass() execute()', to nazwałbym 'myAsyncExtendingClass() executeOnExecutor (AsyncTask.THREAD_POOL_EXECUTOR, "");.' –

Powiązane problemy