在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方法,所以其实并未真正的启动一个子线程
以上是我想到的两个方案,不知对不对