我有一个看似这样的延迟通话:
handler.postDelayed(new Runnable() {
public void run() {
newDeviceBluetooth();
//increment progressbar each thousand millis passed
}
},15000);
但是我有一个功能齐全的进度条,我想通过延迟传递每一秒。 那么这个问题的方法是什么呢,它是一种实现这个的方法吗?
感谢您回答并帮助我的时间
所以在我看了答案中可能的内容后,我编写了自己的类来实现runnable。这是实现这个的可能方法吗?如果我的直觉感觉不是很糟糕的话,我觉得我有点不对劲。
public void run() {
while(counter <= 15){
if(counter < 15){
handler.postDelayed(new Runnable() {
@Override
public void run() {
counter++;
}
}, 1000);
}
else{
sb.newDeviceBluetooth();
}
}
}
答案 0 :(得分:3)
您是否可以使用AsyncTask?然后,您可以调用publishProgress()并更新onProgressUpdate()
中的UI也许这不是最好的解决方案,因为它需要另一个线程。
但你可以让你的Runnable每秒都开火。你可以通过让run()方法对你的处理程序执行postDelayed()来实现这一点。
创建自己的可扩展runnable的类,并使用成员变量作为计数器。 在正常情况下更新UI,并在第15次调用newDeviceBluetooth()。
答案 1 :(得分:1)
找到问题的答案。在App / dialog / Progress对话框
下的api演示中有一个示例代码因此,下面的代码需要修改,但它会显示进度条的延迟。
mProgressHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (mProgress >= MAX_PROGRESS) {
mProgressDialog.dismiss();
} else {
mProgress++;
mProgressDialog.incrementProgressBy(1);
mProgressHandler.sendEmptyMessageDelayed(0, 100);
}