这个定时器代码中的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);
答案 0 :(得分:4)
runOnUiThread()
是Activity
上的一种方法。你想要的是post()
,View
上的一个方法,用于安排在主应用程序线程上运行Runnable
。
另一种方法不是你的方法,而是一种开销较小的方法:
new Runnable() {
public void run() {
view.invalidate();
view.postDelayed(this, 40);
}
}.run();
这可以避免使用Timer
和TimerTask
创建的后台线程。如果您希望稍后取消此操作,请让Runnable
关注某些boolean
数据成员进行更改,或者保留Runnable
并将其与removeCallbacks()
一起使用(另一种方法)在View
)。