我正在使用Handler
的postDelayed
方法,以便在一定时间后执行某个操作:
private static int time_to_wait = 2000;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Make Action
}
}, time_to_wait);
现在在等待时间的中间,由于某些处理结果,我想改变剩余毫秒数的值,比如说它已经等待了1000毫秒,我想让它从2000开始重新计时。所以,我将time_to_wait
的值设为2000,但它并不会把这个数值考虑在内,只是等待该时间,而不管将time_to_wait
的值更改为任何其他值。
int
是一种原始类型,传递的是值 - 值被复制,与原始变量没有任何关联。如果您将int
变量传递给某个方法,然后尝试在其他地方更改该变量(在该方法之外),则该变量的更改不会反映在此方法中,因为它拥有自己的变量副本。 - DrewRunnable r = new Runnable(...);
。然后像这样发布它:handler.postDelayed(r, time_to_wait);
。如果需要在此期间取消它,可以调用handler.removeCallbacks(r);
。根据您的应用程序逻辑,可以再次发布它。希望这有所帮助。 - Drew