如何在Android中以定义的间隔运行一个可运行的线程?

时间 2009-12-17
阅读 564496
点赞 299
收藏 115
连接rajapandian

我开发了一个应用程序,在Android Emulator屏幕上按定义的时间间隔显示一些文本。我正在使用Handler班级。以下是我的代码片段:

handler = new Handler();
Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");               
    }
};
handler.postDelayed(r, 1000);

运行此应用程序时,文本只显示一次。为什么?

✅ 被采纳的答案

示例的简单修复方法是:

handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");
        handler.postDelayed(this, 1000);
    }
};

handler.postDelayed(r, 1000);

或者我们可以使用普通螺纹,例如(使用原始流道):

Thread thread = new Thread() {
    @Override
    public void run() {
        try {
            while(true) {
                sleep(1000);
                handler.post(this);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();

您可以将可运行对象视为可以发送到消息队列执行的命令,而处理程序则视为用于发送该命令的助手对象。

这里有更多的细节http://developer.android.com/reference/android/os/Handler.html

👍 475