→ 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