如何阻止线程

时间:2014-05-19 15:26:04

标签: android multithreading

我已经搜索了杀死Runnable但是我找不到这个代码的真实答案。我尝试过boolean和stop()方法。有人可以帮我杀死这个runnable吗?感谢。

Runnable runnable = new Runnable() {
                  @Override
                  public void run() {

                      while(true) {
                      try {
                          Thread.sleep(1000);
                        } catch (InterruptedException e) {
                          e.printStackTrace();
                        }

                      MainActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            myL.setBackgroundResource(R.drawable.close);

                        }
                    });
                      try {
                          Thread.sleep(1000);
                        } catch (InterruptedException e) {
                          e.printStackTrace();
                        }

                      MainActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                myL.setBackgroundResource(R.drawable.open);

                            }
                        });
                    }
                  }
                };
                new Thread(runnable).start();

2 个答案:

答案 0 :(得分:0)

您可以设置退出条件:

private class MyThread extends Thread {
  private boolean volatile exit = false;
   @Override
   public void run() {
     while(!exit) {
     }
   }

  public void stopMyThread() {
       exit = true;
  }

}

并从您的代码中调用

 myThreadInstance.stopMyThread();

当你需要让你运行方法完成

答案 1 :(得分:0)

你无限地重复着一秒钟的等待。这永远不会停止。你需要有一个boolean标志作为继续/停止条件,你需要在线程需要停止时否定它的值。

如果您想从其他Thread停止播放,请拨打Thread.interrupt