我在文档中读到,当我们实现Runnable
时,我们正在创建一个新线程并发布在该线程内运行的任何代码,我们使用handler在uithread上执行UI更新。
但在我的下面的例子中
private class AutoIncrementer implements Runnable {
@Override
public void run() {
if(plusButtonIsPressed){
incrementValue();
handler.postDelayed( new AutoIncrementer(), REPEAT_INTERVAL_MS);
}
}
}
在这里,我使用handler.postDelayed()
以递增的值更新UI
并再次实施onLongClickListener()
plusButton.setOnLongClickListener(
new View.OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
plusButtonIsPressed = true;
handler.post(new AutoIncrementer());
return false;
}
}
);
我再次使用handler.post(new AutoIncrementer())
.....当我通过handler.postDelayed()
更新UI时,为什么需要使用它?
答案 0 :(得分:4)
Runnable
不是新线程,它只是一段代码,可以"运行"。
handler.post
内onLongClick
AutoIncrementer
启动onLongClick
的第一次运行。然后在该代码中,它需要安排下一次检查(因为data.frame
只被调用一次,而不是重复按下按钮)。