This question already has answers here:
How to change/reset handler post delayed time?
(2个答案)
2年前关闭。
我正在尝试在调用OnCreate方法时运行处理程序。然后,我想取消处理程序并在收到用户交互时再次调用它(重新启动处理程序)。
我该怎么做?
提前致谢
}
或者你可以做这样的事情:
(2个答案)
2年前关闭。
@Override
public void onUserInteraction() {
Handler handler = new Handler();
handler.postDelayed(new Runnable () {
public void run() {
finish();
}
}, 5000);
handler.removeCallbacks(null);
}
我正在尝试在调用OnCreate方法时运行处理程序。然后,我想取消处理程序并在收到用户交互时再次调用它(重新启动处理程序)。
我该怎么做?
提前致谢
最佳答案
您可以使用布尔对象,例如:
@Override
public void onUserInteraction() {
isStarted = true;
Handler handler = new Handler();
handler.postDelayed(new Runnable () {
public void run() {
if(isStarted){
finish();
}
}
}, 5000);
}
或者你可以做这样的事情:
Runnable myRunnable = new Runnable() {
@Override
public void run() {
finish();
}
};
public static Handler myHandler = new Handler();
private static final int TIME_TO_WAIT = 5000;
@Override
public void onUserInteraction() {
restart();
}
public void start() {
myHandler.postDelayed(myRunnable, TIME_TO_WAIT);
}
public void stop() {
myHandler.removeCallbacks(myRunnable);
}
public void restart() {
myHandler.removeCallbacks(myRunnable);
myHandler.postDelayed(myRunnable, TIME_TO_WAIT);
}