加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何正确中断android中的线程

发布时间:2020-12-15 04:21:02 所属栏目:Java 来源:网络整理
导读:在我的应用程序中,我有一个按钮,当它被点击时,我开始一个新的线程并更改按钮的文本.如果我再次按下按钮,它将开始更快地更改其文本. 我想在第二次按下按钮时中断线程.这样做的正确方法是什么? public class TestActivity extends Activity { Button btn; int
在我的应用程序中,我有一个按钮,当它被点击时,我开始一个新的线程并更改按钮的文本.如果我再次按下按钮,它将开始更快地更改其文本.

我想在第二次按下按钮时中断线程.这样做的正确方法是什么?

public class TestActivity extends Activity {

 Button btn;
 int i = 0;

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     btn = (Button)findViewById(R.id.btn);
     btn.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           runThread();
       }
     });
 }

private void runThread() {
    new Thread() {
      public void run() {
          while (i++ < 1000) {
              try {
                  runOnUiThread(new Runnable() {

                      @Override
                      public void run() {
                          btn.setText("#" + i);
                      }
                  });
                  Thread.sleep(300);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
          }
      }
    }.start();
}

解决方法

在我看来,最好的方法是使用变量来控制它.

就像是:

while(i++ < 1000 && keepRunning)

我认为这是一个很好的解决方案,因为它无法导致意外行为,因为您确定线程将退出的确切时刻.

额外 –

作为一个建议,我也建议你设置你的线程非Damon(setDaemon(false)),因为它使布局更改

同样,给线程一个名称(setName())是一个很好的做法,以便于调试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读