如何才能不中的线程Android

发布时间: 2016/9/11 9:53:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试过要倒计时反击哪里用户单击 button 停止倒计时。

我在网上搜索方法来停止线程控制倒计时。

我尝试使用 interruptInterruptedstop ,但不是成功的在停止使用这些方法中的任何线程。

问题︰ 怎样才能阻止线程控制我倒计时计数器?

public class Main2Activity extends AppCompatActivity {

    TextView mTextField;
    Button stop;
    Activity myActivity;
    PrimeThread T1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        myActivity=this;
        mTextField = (TextView) findViewById(R.id.counter);
        T1=new PrimeThread();
        T1.start(); }

    public void stop(View view){   T1.interrupt();    }

    class PrimeThread extends Thread {
        int i=10;
        public void run() {
            while(i>0){
                myActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mTextField.setText("00:0"+i);
                    }
                });
                i--;
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }}}
}

解决方法 1:

可以放入您的线程的一个标志︰

public class Main2Activity extends AppCompatActivity {

    TextView mTextField;
    Button stop;
    Activity myActivity;
    PrimeThread T1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        myActivity=this;
        mTextField = (TextView) findViewById(R.id.counter);
        T1=new PrimeThread();
        T1.start(); }

    public void stop(View view){   T1.stopRunning();    }

    class PrimeThread extends Thread {
        int i=10;
        boolean running = false;
        public void run() {
            running = true;
            while(running && i < 10){
                i++;
                myActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mTextField.setText("00:0"+i);
                    }
                });
                i--;
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

        public void stopRunning(){
            running = false;
        }
    }
}
官方微信
官方QQ群
31647020