→ ssccg: 那你就等取完網址再呼叫上傳雲端啊? 自己連呼叫兩次是? 02/03 22:23
→ grezod: 修正一下 套件是AsyncHttpClient 02/03 22:24
→ grezod: 問題點就是上傳的方法明明在傳圖下面 02/03 22:24
→ ssccg: android如果在main thread呼叫一定是用非同步API,完成後才 02/03 22:28
→ ssccg: 繼續是要寫在callback裡,不是下一行 02/03 22:29
→ grezod: 謝謝s大 callback是個好方法 02/03 22:35
→ grezod: 不過因為我的程式是用for回圈設變數動態對應不同的圖片數 02/03 22:36
→ grezod: 量 02/03 22:36
→ grezod: 不是一個接一個 所以是否有辦法判斷多個上傳的執行緒都跑 02/03 22:38
→ grezod: 完後 才跑寫資料庫的方法 02/03 22:38
→ ssccg: 當然可以但是怎麼寫比較簡單要看你用的library和版本 02/03 22:53
→ grezod: 請問S大有什麼關鍵字或網頁可參考的嗎 02/03 23:04
→ ssccg: 如果library沒,最通用的大概是ExecutorService的invokeAll 02/03 23:05
→ grezod: 我估狗看看 感謝 02/03 23:09
→ ssccg: 最簡單的作法是CompletableFuture但是要7.0+或用別的lib 02/03 23:12
→ grezod: 好的 謝謝分享! 02/03 23:17
→ AminLA: 這用countdownlatch 可以實現,但要記得處理好time out與 02/04 17:15
→ AminLA: 異常 02/04 17:15
→ grezod: 回報一下結果 我用S大說的invokeall 好像跟asyncHttpClie 02/04 22:01
→ grezod: 會相衝 只要一跑到送POST那行就會停擺 02/04 22:02
→ grezod: 後來改用AMI大說的COUNTDOWNLATCH 有成功達到我要的效果 02/04 22:03
→ grezod: 不過奇怪的是我要顯示讀取中的DIALOG他一定要等TASK跑完才 02/04 22:03
→ grezod: 會出現 02/04 22:03
→ ssccg: 你現在的作法大概是block了main thread... 02/05 00:34
→ ssccg: 要用Executor或Future系列的東西,就不用async client 02/05 00:34
→ ssccg: 直接在Executor的thread上用同步方式執行就好 02/05 00:35
→ ssccg: 然後負責等所有工作完成的(invokeAll/latch的await)也必須 02/05 00:36
→ ssccg: 另起一個thread來做,才不會block main thread 02/05 00:36
→ ssccg: main thread的觀念是android(其他GUI framework大概也是) 02/05 00:38
→ ssccg: 必須要弄清楚的 02/05 00:39
→ grezod: 感謝分享! 02/05 08:17