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。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。