在Android的程序中,UI线程是主线程理论上来讲,Activity调用了finish方法后,主线程就终止了那么其上的子线程也应该是停止
但是通过测试,发现并不是这样finish退出程序后,子线程还在后台跑必须用DDMS停止该线程才行
那么如何在程序退出时,停止所有开启的子线程呢?我想到了两个方案:
一,在退出时,改变线程内循环的标识符while(isRun){…}将isRun置为false,则打破了循环,线程终止
二,不采用while(isRun){…}这样的循环方式而利用Android提供的Handler机制来完成
//将一个线程立即加入线程队列,并执行它的[color=red]run[/color]方法
handler.post(test);
Runnable test = new Runnable(){
public void run(){
//以上代码略
//延迟1000毫秒,执行这个线程的[color=red]run[/color]方法
handler.postDelayed(test,1000);
}
}
//退出时
//即从线程队列中移除该线程,不再被执行
handler.removeCallbacks(test);
如红字标注,确实是调用的run方法,所以其实并未真正的启动一个子线程
以上是我想到的两个方案,不知对不对