Android的:如何停止的Runnable?Android、Runnable

2023-09-12 09:03:58 作者:苛惜卟是倪

我想是这样的:

private Runnable changeColor = new Runnable() {
   private boolean killMe=false;
   public void run() {
       //some work
       if(!killMe) color_changer.postDelayed(changeColor, 150);
   }
   public void kill(){
       killMe=true;
   }
};

但我不能访问杀()的方法!

推荐答案

而不是实现自己的 thread.kill()机制,使用由SDK提供的现有API。在线程池和使用的 Future.cancel()杀死正在运行的线程:

Instead implement your own thread.kill() mechanism, using existing API provided by the SDK. Manage your thread creation within a threadpool, and use Future.cancel() to kill the running thread:

ExecutorService threadPoolExecutor = Executors.newSingleThreadExecutor();
Runnable longRunningTask = new Runnable();

// submit task to threadpool:
Future longRunningTaskFuture = threadPoolExecutor.submit(longRunningTask);

... ...
// At some point in the future, if you want to kill the task:
longRunningTaskFuture.cancel(true);
... ...

取消方法的行为有所不同根据您的任务运行状态,检查API的更多细节。

Cancel method will behave differently based on your task running state, check the API for more details.