Java Android中eventlisteners的超时检测
我设置了事件侦听器,例如:Java Android中eventlisteners的超时检测,java,android,timeout,Java,Android,Timeout,我设置了事件侦听器,例如:setOnClickListener,如下所示 Button stopBtn = (Button)findViewById(R.id.stop); stopBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { doMagic(); } }); 如
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秒后,我仍然可以点击它,这可能是因为事件监听器仍然连接。即使我不知道它是否被点燃,我怎么能拆开它呢 在处理程序上发布的消息可以管理:
myHandler.postDelayed(new Runnable() {
public void run() {
if(something happened) {
// magic work
} else {
// turn off the event
}
}
, 10000);
可以使用以下代码将初始化作为实例变量:
final Handler myHandler = new Handler();
延迟的动作可以通过使用。具体检查两种方法:和
创建
处理程序
很容易,只需在活动.onCreate(Bundle state)
中使用其默认构造函数Handler=new Handler()
。然后将所需操作包装成一个Runnable
,并传递给处理程序。噢,当我写这篇Tim Messerschmidt
时,已经发布了几乎相同的建议。:)您可以将侦听器更改为新的侦听器(可能是空的或任何您需要的)