runOnUiThread(new Runnable)在类中未定义,扩展了View

时间:2013-08-02 12:32:36

标签: android android-canvas

这个定时器代码中的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);

1 个答案:

答案 0 :(得分:4)

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

另一种方法不是你的方法,而是一种开销较小的方法:

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

这可以避免使用TimerTimerTask创建的后台线程。如果您希望稍后取消此操作,请让Runnable关注某些boolean数据成员进行更改,或者保留Runnable并将其与removeCallbacks()一起使用(另一种方法)在View)。