Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中eventlisteners的超时检测_Java_Android_Timeout - Fatal编程技术网

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
时,已经发布了几乎相同的建议。:)您可以将侦听器更改为新的侦听器(可能是空的或任何您需要的)