0

在此计时器代码中,runOnUiThread(new Runnable) 在扩展视图的类中未定义。这是否可以在扩展 View 的类中使用此代码。

 Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            view.invalidate;
        }
     });
 } 
}, 40);
4

1 回答 1

4

runOnUiThread()是一种方法Activity。你想要的是post(),这是一个View安排 aRunnable在主应用程序线程上运行的方法。

与您相比,另一种开销更少的方法是:

new Runnable() {
  public void run() {
    view.invalidate();
    view.postDelayed(this, 40);
  }
}.run();

Timer这避免了使用and创建的后台线程TimerTask。如果您希望稍后取消此操作,请Runnable注意某些boolean数据成员的更改,或按住Runnable并使用它removeCallbacks()(另一种方法 on View)。

于 2013-08-02T12:37:46.123 回答