代码:
private void startTimer() {
final ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
int count = 60;
time.setText(count - 1 + "");
count--;
}
});
}
}, 0 , 1000, TimeUnit.MILLISECONDS);
}
我想每1秒更新一次TextView中的文本,但这似乎只是第一次使用,后来的文本没有更新。
任何人都知道这是什么问题吗?
答案 0 :(得分:4)
int count = 60;
private void startTimer() {
final ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if(count > 0){
time.setText(count - 1 + "");
count--;
}
}
});
}
}, 0 , 1000, TimeUnit.MILLISECONDS);
}
答案 1 :(得分:2)
阅读 How to run a Runnable thread in Android
您可以使用处理程序
Handler允许您发送和处理Message和Runnable对象 与线程的MessageQueue相关联。每个Handler实例都是 与单个线程和该线程的消息队列相关联。什么时候 你创建一个新的Handler,它绑定到线程/消息队列 正在创建它的线程 - 从那时起,它将传递 消息和runnables到该消息队列并按它们执行它们 从消息队列中走出来。
您需要使用handler.postDelayed(new Runnable()
方法。
使Runnable r添加到要运行的消息队列中 经过指定的时间后。 runnable将运行 在这个处理程序附加到的线程上。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Add your code Here
handler.postDelayed(this, 1000); // You can change your time
}
}, 900);