※ 引述《vegafish (曾經太過年輕)》之銘言:
: 問題:
: 想要在使用者等待程式回應的時候,顯示繞圈圈的 ProgressBar。
: 原本我的寫法是將 ProgressBar的 .show() 放在 activity onCreate() 的頂端,
: 將 ProgressBar 的 .dismiss() 放在 activity onCreate() 的底端。
: 但我發現這樣並不能達到預期的效果。
: 請問各路高手,這段程式碼是哪邊出了問題呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.9.133.86
※ 編輯: changyuheng 來自: 36.224.173.98 (06/23 10:12)
main thread 就是 UI thread,
繁忙的事情不能放在 main thread 裡做,
會讓 UI 卡住。
另外 show() 放在 onCreate 應該不會馬上 show,
因為 onResume() 時才畫,
可以去爬 source code 求證。
這個 case 需要開一個 Handler。
流程應該是:
一開始先叫 ProgressBar 或現成的 ProgressDialog 起來,
接著送出處理大量事情 Message 給 Handler,
Handler 收到後開始做事,
做完事情之後再把 ProgressBar/ProgressDialog 關掉。
只開 Handler 是最方便的,
因為 Handler 並沒有另開 thread,不會有非 main thread 無法控制 UI 的問題,
同時也有多執行緒的效果。