android 獲取進度條進度值,加斷點可以獲取到,不加斷點就獲取不到,,而且加斷點是每次跑的值都不一樣
這個是代碼的一部分,,
btn_dignosis.setVisibility(View.GONE);
cirProgress.setVisibility(View.VISIBLE);
startProgress(); // 加載進度條
currentProgress = cirProgress.getProgress();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
currentProgress = cirProgress.getProgress();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
tv_info.setText("重新檢測");
tv_info.setEnabled(true);
// 獲取當前系統時間
tv_lastScanTime.setText(getSysDate());
// 下劃線
tv_info.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
tv_info.getPaint().setAntiAlias(true);// 抗鋸齒
// 重新檢測加載進度條
tv_info.setClickable(true);
tv_info.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startProgress(); // 重新加載進度條
}
});
下面是startProgress()方法的代碼
// 加載進度條
private void startProgress() {
if (!running) {
new Thread(new Runnable() {
@Override
public void run() {
while (progress <= 58) {
progress += 2;
cirProgress.setProgress(progress);
try {
Thread.sleep(70);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progress = 0;
running = false;
}
}).start();
}
}
你在線程外獲取線程裡邊的值,當自動運行的時候,兩句代碼之間執行消耗的時間很小,所以currentProgress不加斷點的時候都是0,當你debug調試的時候,因為debug會卡在currentProgress = cirProgress.getProgress(); 給線程足夠的時間能夠運行,所以debug的時候能夠獲取到數據。
你可以使用 Mr_dsw 的方案或者使用AsyncTask。