为什么Handler、Timer只运行一次?

3
我有这段代码,想要每1000毫秒运行一次Log.d,但它只运行了一次。
seekView.postDelayed(new Runnable() {

                public void run() {
                    Log.d("WWWW", "www");

                }
            }, 1000);

创建处理程序、计时器等只运行一次,像这样,我的问题在哪里?
2个回答

11
为了让它以每秒一次的间隔持续运行,需要在您的Run方法中再次嵌套调用postDelayed。请参见以下示例:
seekView.postDelayed(new Runnable() {

  public void run() {
    Log.d("WWWW", "www");

    //calling postdelayed again
    seekView.postDelayed(this, 1000);       //added this line
  }
}, 1000);

这样做将使其每隔1秒调用一次自身。


3

用于重复的情况:

 ... 
class YourTimeTask extends TimerTask {
   public void run() {
    ....
   }
}

...
new Timer().scheduleAtFixedRate(new YourTimerTask(), after, interval);
... 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接