我设置了事件监听器,例如:setOnClickListener
像这样
Button stopBtn = (Button)findViewById(R.id.stop);
stopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doMagic();
}
});
如果未按下按钮,我想将此监听器设置为 10 秒超时事件。用例:我有 button1
激活此 stopBtn
监听器 10 秒,如果超时,它将被停用,我需要按 button1
才能使 stopBtn
再次激活。
我可能做错了:
final Handler myHandler = new Handler();
startBtn = (Button)findViewById(R.id.start);
myHandler.postDelayed(new Runnable() {
public void run() {
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG,"runned");
}
});
}
}, 10000);
10 秒后,我仍然可以单击它,这可能是因为事件监听器仍然附加。即使我不知道它是否被解雇,我怎样才能将其分离。
最佳答案
一个delayed Runnable发布在处理程序上可以管理:
myHandler.postDelayed(new Runnable() {
public void run() {
if(something happened) {
// magic work
} else {
// turn off the event
}
}
, 10000);
您可以初始化 Handler使用以下代码作为实例变量:
final Handler myHandler = new Handler();
关于java - Android 中事件监听器的超时检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11097208/