如何“杀死”当前的可运行程序并按开始/停止 android 按钮启动一个新的可运行程序(并防止多个重叠的可运行进程)?

问题描述 投票:0回答:1

我正在努力使用 android 按钮来启动/停止循环功能,但在尝试使用 handler.postDelayed()、handler.removeCallbacksAndMessages() 和 executorService() 函数后,我找不到合适的解决方案/解释。

有一个“开始/停止”按钮,应该:

  1. 调用一个每隔预定义秒自动运行一次的函数(也带有计时器),
  2. 停止当前可运行的进程(以便更改一些输入)
  3. 开始一个新流程(使用这些新输入)
public void startAndStopButton(View v){
      final Handler myHandler = new Handler();
      final Runnable myRunnable = new Runnable() {
          public void run() {
              startTimer();
              runRandomOperation();
              myHandler.postDelayed(this, delay);
          }
      };
      myHandler.postDelayed(myRunnable, 0);
  }

目前,我成功启动了定时器并运行了循环函数,但还是不行:

  1. 终止/中断当前的可运行程序(为了停止该进程,更改一些输入并重新启动它)
  2. 如果用户重复按下按钮,防止多个可运行对象重叠(计时器和函数调用混乱)

(我不想使用线程和 Sleep 方法,因为用户应该能够在可运行程序执行时更改一些输入)

android button handler runnable
1个回答
0
投票

我觉得查看

hasCallbacks(Runnable r)
类中的
Handler
api 应该会有所帮助,然后继续使用
removeCallbacks
api。我在基于 if-else 的逻辑中有多个可运行对象的情况下使用了这些。

参考:

  1. https://developer.android.com/reference/android/os/Handler#removeCallbacks(java.lang.Runnable)

  2. https://developer.android.com/reference/android/os/Handler#hasCallbacks(java.lang.Runnable)

© www.soinside.com 2019 - 2024. All rights reserved.