Android 无论如何停止线程

Android 无论如何停止线程,android,multithreading,Android,Multithreading,我有几个活动通过点击按钮一个接一个地进行,但如果在10秒内没有点击按钮,下一个活动将在线程的帮助下自动启动 button1 = (ImageButton)findViewById(R.id.button2); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent firstIntent = new Intent(Tab1.this, Tab2.class

我有几个活动通过点击按钮一个接一个地进行,但如果在10秒内没有点击按钮,下一个活动将在线程的帮助下自动启动

button1 = (ImageButton)findViewById(R.id.button2);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

Intent firstIntent = new Intent(Tab1.this, Tab2.class);
startActivity(firstIntent);                 
            finish();
        }
    }); 

Thread background = new Thread() {
    public void run() {

     try {

     sleep(10*1000);


     Intent i=new Intent(getBaseContext(),Tab2.class);
     i.putExtra("CountNum", count);
     startActivity(i);

     finish();

     } catch (Exception e) {

            }
        }
    };

    background.start();

问题是:如果单击按钮从tab1转到tab2,再转到tab3,10秒钟后tab2将再次启动,因为tab1中的线程仍在运行(我不知道它是这样工作的=\)。如何修复它?如果我使用按钮,如何停止线程?提前感谢

有一段时间,
.stop()
已被弃用,这是一种非常不鼓励的做法,因为它可能以不安全的方式终止
线程

最常见的方法是在
线程
中使用
布尔
控制器,它将检查是否发生了某些操作(在您的情况下,一个按钮已被按下),如果发生了,在下一次循环迭代中,只需在
线程
中使用
返回
。这将使其干净安全地终止

----编辑---

假设这是您的按钮
onClickListener()


下面是一个例子,我希望它能帮助我修改一下你的代码

首先创建一个布尔OKToStart,它将用于检查我们是否在10秒圈内

button1 = (ImageButton)findViewById(R.id.button2);
boolean OKToStart =true;
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(OKToStart){
Intent firstIntent = new Intent(Tab1.this, Tab2.class);
startActivity(firstIntent);                 
            finish();
 }
        }
    }); 

Thread background = new Thread() {
    public void run() {
    while(OKToStart){

     try {

     sleep(10*1000);


     OKToStart =false



     } catch (Exception e) {

            }
        }
    }};

    background.start();

不要使用线程,使用计时器或倒计时。在SO中有很多例子。
button1 = (ImageButton)findViewById(R.id.button2);
boolean OKToStart =true;
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(OKToStart){
Intent firstIntent = new Intent(Tab1.this, Tab2.class);
startActivity(firstIntent);                 
            finish();
 }
        }
    }); 

Thread background = new Thread() {
    public void run() {
    while(OKToStart){

     try {

     sleep(10*1000);


     OKToStart =false



     } catch (Exception e) {

            }
        }
    }};

    background.start();