→ ssccg: dialog/toast的show或其他UI改變都是在main thread的queue 02/05 00:44
→ ssccg: 排程,等main thread空出來後才會執行,所以如果有如 02/05 00:46
→ ssccg: CountDownLatch.await這種會block目前thread的動作,必須另 02/05 00:47
→ ssccg: 開thread不要在main thread上執行 02/05 00:47
→ grezod: S大 看完你的留言我有試了兩種方式 一種是直接把TOAST放 02/05 08:13
→ grezod: 到上傳圖片的THREAD中 會直接閃退 02/05 08:13
→ grezod: 一種是在上傳圖片的THREAD中 用runOnUIthread放TOAST 02/05 08:14
→ grezod: 但是效果跟我把TOAST放在外面是一樣的 02/05 08:14
→ grezod: 就我的理解UI元件相關的只能跑在MAIN THREAD上 02/05 08:16
→ grezod: 所以是否代表只要我用VOUNTDOWNLATCH 這個問題就無解? 02/05 08:16
→ grezod: 修正上一句 COUNTDOWNLATCH 02/05 08:17
→ ssccg: 是把CountDownLatch的await搬到背景thread,不是把UI動作搬 02/05 17:02
→ ssccg: 到背景thread... 02/05 17:02
→ ssccg: 流程大概會像這樣 02/05 17:38
→ ssccg: Main Thread Thread A Http Thread 1..N 02/05 17:42
→ ssccg: dialog.show 02/05 17:42
→ ssccg: ThreadA.start new CountDownLatch 02/05 17:43
→ ssccg: return async http*N http request 02/05 17:43
→ ssccg: (event) latch.await . 02/05 17:43
→ ssccg: dialog顯示 . . 02/05 17:44
→ ssccg: return . . 02/05 17:44
→ ssccg: - . http response 02/05 17:44
→ ssccg: - . latch.countDown 02/05 17:45
→ ssccg: - (wake up) (↑*N) 02/05 17:45
→ ssccg: - ... return 02/05 17:45
→ ssccg: (event) dialog.dismiss 02/05 17:45
→ ssccg: dialog隱藏 return 02/05 17:46
→ ssccg: return 02/05 17:46
→ grezod: 謝謝S大 我再試著實做看看 02/05 23:54