看板 AndroidDev 關於我們 聯絡資訊
Hi 想請教一個問題 目前有一個需求 需要等待三個asynctask的結果 才能繼續做下一步 goole到有人說可以使用countdownlatch 但我用的時候就一直卡在await 就停住了 不知道我哪裡寫錯了 https://gist.github.com/swy680614/34bdc3c9a9ac1719d6a81eafdbbb7df9 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.28.35 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1469349408.A.E56.html
y3k: AsyncTask的結果放三個變數在那邊 三個Task結束時把結果塞過 07/24 21:00
y3k: 去並去check那三個變數是否null 這樣寫應該是最不花腦的 07/24 21:01
brian780405: .execute()改成.executeOnExecutor( 07/25 01:00
brian780405: AsyncTask.THREAD_POOL_EXECUTOR),試試看? 07/25 01:00
ssccg: onPostExecute會在main thread上執行,但是你的main thread 07/25 08:26
ssccg: 正在cdl.await(),所以就deadlock 07/25 08:26
ssccg: 用CountDownLatch的話countDown要在做事的thread呼叫,不能 07/25 08:28
ssccg: 在正在await的thread呼叫啊... 07/25 08:28
ssccg: 另外AsyncTask如果用execute而不是用executeOnExecutor的話 07/25 08:28
ssccg: 是在AsyncTask.SERIAL_EXECUTOR依序執行,所以其實用最後一 07/25 08:29
ssccg: 個task的get()來等就好了 07/25 08:30
ssccg: 但是block main thread仍然不是好的作法,如果用AsyncTask 07/25 08:31
ssccg: 的設計概念,應該是在onPostExecute自己用一個計數變數去算 07/25 08:32
ssccg: 完成了幾個,因為都在main thread所以不用考慮同步問題 07/25 08:32
htury: 感覺好像在哪個fb社群看過一樣的問題? 07/25 13:30
htury: 同一樓,每個task結束去check三個變數,最後執行自己預設 07/25 13:31
htury: 的method去check,都是true的代表時,就可以往下走 07/25 13:40