java - Android 中事件监听器的超时检测

标签 java android timeout

我设置了事件监听器,例如: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/

相关文章:

java - 用户名密码AuthenticationFilter问题

java - Angular 的请求不要在后端映射我的 API(Spring Boot)

java - 如何在 XML XSLT 转换期间处理 (R) 符号

android - Google Play 管理中心的每月活跃设备安装量

cocoa - NSDictionary DictionaryWithContentsOfURL 超时?

c# - .NET 的 Oracle 数据提供程序 : Connection request timed out

java springboot 如何在普罗米修斯中 Autowiring

android - 如何在没有互联网连接时阻止 webview 加载

android - Android 操作系统上的 TEE/HSM 支持

java - Akka Java setReceiveTimeout 用法