每秒更新通知文本

3

我想每秒更新一次通知文本。我编写了以下代码:

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        builder.setSmallIcon(R.drawable.ic_launcher);
        builder.setContentTitle("Text");
            builder.setContentText("value updated every 1 second");
        }

    }           
}, 1*1000);

但是这个值不是每秒更新一次,而只更新一次。为什么?我该怎么做?

请查看这个其他的stackoverflow 答案 - calimbak
2个回答

1
尝试使用计时器处理程序,只调用一次。
Timer timer = new Timer();
        TimerTask task  = new TimerTask() {

            @Override
            public void run() {
                updateUI();
            }
        };
        timer.scheduleAtFixedRate(task, 0,1000);

将您的处理程序放入单独的方法中。
public void updateUI(){
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                builder.setSmallIcon(R.drawable.ic_launcher);
                builder.setContentTitle("Text");
                    builder.setContentText("value updated every 1 second");

            }
        }, 1000);
    }

0

这段代码启动了一个线程,在每个循环中休眠1000毫秒。

Thread t = new Thread() {

  @Override
  public void run() {
    try {
      while (!isInterrupted()) {
        Thread.sleep(1000);
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            // update TextView here!
          }
        });
      }
    } catch (InterruptedException e) {
    }
  }
};

t.start();

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