[爆卦]Progress bar PTT是什麼?優點缺點精華區懶人包

為什麼這篇Progress bar PTT鄉民發文收入到精華區:因為在Progress bar PTT這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者greenlinux (GreenLinux)看板AndroidDev標題[問題]請教Progr...



請教各位:

我需要設計 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
erty0402: 用handler.sendmessagedelay,直接用sleep會讓mainthrea 07/01 22:44
erty0402: d睡著 07/01 22:44
greenlinux: e大,你是指要拿掉Thread.sleep就好? 07/01 23:57
greenlinux: 用sendMessageDelay做到 sleep 效果? THANKS 07/01 23:58
LZN: 可以嘗試用AsyncTask 07/02 09:11
andy2151: 你onPrintLogClick裡面的迴圈根本不用啊 07/02 09:14
andy2151: 而且你這裡的迴圈下sleep是在main thread sleep 07/02 09:15
andy2151: 要印出log直接在runnable印出即可 07/02 09:17
greenlinux: to Andy大,但我想同步更新UI上的ProgreesBar 07/02 10:49
greenlinux: 將 For loop 寫在runnable 可同時更新UI嗎?THANKS 07/02 10:50
zerofinal: https://goo.gl/cbnEf9 參考一下別人的範例喔~ 07/02 14:43
andy2151: 原程式不動你把for迴圈整個拿掉 應該就正常了 07/03 09:36
y3k: 你那個for把UI Thread卡死了 07/03 19:47

你可能也想看看

搜尋相關網站