android 停止一个无限循环的线程

最近在工作中遇到的一个问题。

一个线程,在按键单击是开始启动,里面的逻辑是一个While(flog == true){  } 的无线循环,当我触发另外一个按键时,改变标志位,结束这个线程和循环,看起来好像很简单的功能,却困扰我很久。然后再查了很多资料和多次尝试后,终于完成了。

思路是这个的,设置一个标志位 Flog,线程开始时为true, 当你需要结束线程的时候,把Flog给为false,使用Thread.interrupt();中止线程。

   附上源码:这是一个触摸事件(按下开始线程,抬起结束线程)

public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
flog  = true;
mythread = new MyThread();
newMyThread.start();
break;
case MotionEvent.ACTION_UP:
StopMyThread();
break;
}
return false;
}

//MyThread线程
public class RockerViewThread extends Thread{
@Override
public void run() {
while(!flog    && !isInterrupted()){
try {

// Log.e("Log_flog", "IN MyThread" );
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

//结束MyThread线程
public synchronized  voidStopMyThread(){
try{
notify();
flog  = false;
mythread.interrupt();
}catch(Exception e){
e.printStackTrace();
}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值