在处理程序上使用postDelayed函数时,需要delayMillis变量来指定处理程序运行的时间。我希望我的处理程序无限重复,所以我嵌套了两个postDelayed函数。
final int initialdt = 1000;
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
handler.postDelayed(this, initialdt);
}
};
handler.postDelayed(r, initialdt);
但是,使用此方法,run()调用之间的时间是固定的。由于内部postDelayed需要 final 整数作为参数。我希望减少连续通话之间的时间。有办法吗?
答案 0 :(得分:3)
这应该做你想要的。
final int initialDt = 1000;
final Handler handler = new Handler();
final Runnable r = new Runnable() {
int dt = initialDt;
public void run() {
dt -= 100;
if (dt >= 0) {
handler.postDelayed(this, dt);
}
}
};
handler.postDelayed(r, initialDt);
答案 1 :(得分:0)
您可以在postDelayed
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
handler.postDelayed(this, limit);
}
}, 1000);