我开发了一个应用程序,可以在Android模拟器屏幕上以指定的时间间隔显示一些文本。我使用的是Handler
类。下面是我的代码中的一段代码:
handler = new Handler();
Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
}
};
handler.postDelayed(r, 1000);
当我运行这个应用程序时,文本只显示一次。为什么?
发布于 2009-12-17 21:23:47
对您的示例的简单修复是:
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
或者我们可以使用普通线程(例如,使用原始Runner):
Thread thread = new Thread() {
@Override
public void run() {
try {
while(true) {
sleep(1000);
handler.post(this);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
您可以将runnable对象看作是可以发送到消息队列以供执行的命令,而handler仅仅是用于发送该命令的辅助对象。
更多细节在这里http://developer.android.com/reference/android/os/Handler.html
发布于 2014-07-21 11:24:32
new Handler().postDelayed(new Runnable() {
public void run() {
// do something...
}
}, 100);
发布于 2012-05-03 16:54:00
Handler handler=new Handler();
Runnable r = new Runnable(){
public void run() {
tv.append("Hello World");
handler.postDelayed(r, 1000);
}
};
handler.post(r);
https://stackoverflow.com/questions/1921514
复制相似问题