android,啟動了一個子線程,這個子線程是一個死迴圈,不成的列印“Hello”。
現在要實現點擊一個Button,讓這個子線程終止,用什麼方法啊?
stop()不起作用,destroy()有異常,Handler貌似也解決不了,因為是一個線程。。。
答案如下:
線程像這樣:Thread{ boolean flag = fase; run(){ while(!flag){ } }}Thread t = new Thread();t.start();-----------------------------------------------------要終止迴圈,只需要這樣t.flag=true;================================================還有一種方式 線程像這樣:Thread{ run(){ while(true){ Thread.sleep(xxxx); } }}Thread t = new Thread();t.start();--------------------------------------------要終止迴圈,只需要這樣t.interrupte();但是這裡要注意調用的時機,要在子線程執行了run方法裡面的sleep(xxxx)後xxxx時間之內調用。也就是子線程會睡一會,醒一會,睡一會,醒一會,要在子線程睡著的時候調用。
一個關於Android程式退出後,線程停止的問題
www.2cto.com
經過測試:以下方法可以終止線程。
方法一:System.exit(0);
方法二:android.os.Process.killProcess(android.os.Process.myPid())//關閉時稍微有些延遲
0
一個關於Android程式退出後,線程停止的問題10
在Android的程式中,UI線程是主線程
理論上來講,Activity調用了finish方法後,主線程就終止了
那麼其上的子線程也應該是停止
但是通過測試,發現並不是這樣
finish退出程式後,子線程還在後台跑
必須用DDMS停止該線程才行
那麼如何在程式退出時,停止所有開啟的子線程呢?
我想到了兩個方案:
一,在退出時,改變線程內迴圈的標識符
while(isRun){...}
將isRun置為false,則打破了迴圈,線程終止
二,不採用while(isRun){...}這樣的迴圈方式
而利用Android提供的Handler機制來完成
Java代碼
//將一個線程立即加入線程隊列,並執行它的[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方法,所以其實並未真正的啟動一個子線程