[問題]請教ProgressBar的程式設計

看板AndroidDev作者 (GreenLinux)時間6年前 (2018/07/01 22:13), 編輯推噓3(3010)
留言13則, 6人參與, 6年前最新討論串1/1
請教各位: 我需要設計 app, 利用 progressbar 去顯示過程的進度 例如我要一邊 print log 一邊顯示過程: private Runnable runnable = new Runnable() { @Override public void run() { try { while (true) { Thread.sleep(100); runOnUiThread(new Runnable() { @Override public void run() { myProgressBar.setProgress(myProgress+=1); } }); } } catch (InterruptedException e) { } } }; public void onPrintLogClick(View view) { myProgressBar.setVisibility(View.VISIBLE); Thread t = new Thread(runnable); t.start(); for (int i=0; i<100; i++){ Log.v(TAG, "NOW "+i); try{ Thread.sleep(10); }catch (InterruptedException e) { e.printStackTrace(); } } } 但不管怎樣寫, 我都是 print Log 完後, progressbar會從0 直接跳至100 不能做到一邊print, 一邊更新UI上的 progressbar.. 請教各位, 到底要怎樣安排才可完成一邊工作一邊更新UI..? THANKS -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.121.93 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1530454436.A.8D4.html

07/01 22:44, 6年前 , 1F
用handler.sendmessagedelay,直接用sleep會讓mainthrea
07/01 22:44, 1F

07/01 22:44, 6年前 , 2F
d睡著
07/01 22:44, 2F

07/01 23:57, 6年前 , 3F
e大,你是指要拿掉Thread.sleep就好?
07/01 23:57, 3F

07/01 23:58, 6年前 , 4F
用sendMessageDelay做到 sleep 效果? THANKS
07/01 23:58, 4F

07/02 09:11, 6年前 , 5F
可以嘗試用AsyncTask
07/02 09:11, 5F

07/02 09:14, 6年前 , 6F
你onPrintLogClick裡面的迴圈根本不用啊
07/02 09:14, 6F

07/02 09:15, 6年前 , 7F
而且你這裡的迴圈下sleep是在main thread sleep
07/02 09:15, 7F

07/02 09:17, 6年前 , 8F
要印出log直接在runnable印出即可
07/02 09:17, 8F

07/02 10:49, 6年前 , 9F
to Andy大,但我想同步更新UI上的ProgreesBar
07/02 10:49, 9F

07/02 10:50, 6年前 , 10F
將 For loop 寫在runnable 可同時更新UI嗎?THANKS
07/02 10:50, 10F

07/02 14:43, 6年前 , 11F
https://goo.gl/cbnEf9 參考一下別人的範例喔~
07/02 14:43, 11F

07/03 09:36, 6年前 , 12F
原程式不動你把for迴圈整個拿掉 應該就正常了
07/03 09:36, 12F

07/03 19:47, 6年前 , 13F
你那個for把UI Thread卡死了
07/03 19:47, 13F
文章代碼(AID): #1REE6aZK (AndroidDev)
文章代碼(AID): #1REE6aZK (AndroidDev)