Android 线程按钮睡眠

发布于 2024-10-09 18:44:45 字数 678 浏览 0 评论 0原文

对于我的项目,当我单击按钮“A”时,我尝试每 10 秒执行一次方法 当我再次单击按钮时它应该停止(有点开/关)。

这就是我达到的目标:-/:

  ButtonA.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {               

                        Handler handler = new Handler(); 
                    handler.postDelayed(new Runnable() { 
                         public void run() { 
                             showCurrentLocation();
                                Methodexecute();

                         } 
                    }, 10000); 
                }

                    }
        });

如何每 10 秒重复执行此方法,直到再次单击按钮?

谢谢

For my project, I am trying to execute a Method every 10 seconds when I click a button "A"
and it should stop when I click the button again (kind of on/off).

this is what i reached :-/ :

  ButtonA.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {               

                        Handler handler = new Handler(); 
                    handler.postDelayed(new Runnable() { 
                         public void run() { 
                             showCurrentLocation();
                                Methodexecute();

                         } 
                    }, 10000); 
                }

                    }
        });

How can I repeat executing this method every 10 seconds until the button is clicked again?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

太阳哥哥 2024-10-16 18:44:45

考虑将 Timer 与 TimerTask 一起使用,每 10 秒调度一次。
我希望这会起作用:

Timer timer = new Timer();
    TimerTask task = new TimerTask() {

        @Override
        public void run() {
            //insert your methods here
        }
    };

    boolean taskIsRunning = false;
    if(taskIsRunning){
        timer.cancel();
        taskIsRunning = false;
    } else {            
        timer.schedule(task, 0, 10000);
        taskIsRunning = true;
    }

Consider using a Timer with a TimerTask, scheduling it every 10 seconds.
I hope this will work:

Timer timer = new Timer();
    TimerTask task = new TimerTask() {

        @Override
        public void run() {
            //insert your methods here
        }
    };

    boolean taskIsRunning = false;
    if(taskIsRunning){
        timer.cancel();
        taskIsRunning = false;
    } else {            
        timer.schedule(task, 0, 10000);
        taskIsRunning = true;
    }
锦欢 2024-10-16 18:44:45
handler = new Handler();
ButtonA.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {

            handler.postDelayed(new Runnable() { 
                 public void run() {
                     if(taskIsRunning){
                         showCurrentLocation();
                         Methodexecute();
                         handler.postDelayed(this,10000);
                     }
                 } 
            }, 10000); 
        }
    }
});
handler = new Handler();
ButtonA.setOnClickListener(new OnClickListener() {
    @Override public void onClick(View v) {

            handler.postDelayed(new Runnable() { 
                 public void run() {
                     if(taskIsRunning){
                         showCurrentLocation();
                         Methodexecute();
                         handler.postDelayed(this,10000);
                     }
                 } 
            }, 10000); 
        }
    }
});
微暖i 2024-10-16 18:44:45

在 onClick 方法中,您还可以像这样切换计时器任务:

...
@Override public void onClick(View v) {
     ...
     toggleTask();
     ...
}
...

然后,从 Jonathan 的代码中,类似

boolean taskIsRunning = false;
Timer timer;
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        //insert your methods here
    }
};
private void toggleTask() {
    if(taskIsRunning){
        timer.cancel();
        taskIsRunning = false;
    } else {  
        timer = new Timer()          
        timer.schedule(task, 0, 10000);
        taskIsRunning = true;
    }
}

In your onClick method you can also toggle the timer task like so:

...
@Override public void onClick(View v) {
     ...
     toggleTask();
     ...
}
...

and then, from Jonathan's code, something like

boolean taskIsRunning = false;
Timer timer;
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        //insert your methods here
    }
};
private void toggleTask() {
    if(taskIsRunning){
        timer.cancel();
        taskIsRunning = false;
    } else {  
        timer = new Timer()          
        timer.schedule(task, 0, 10000);
        taskIsRunning = true;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文