android終止無限迴圈線程和程式退出時銷毀線程

來源:互聯網
上載者:User

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方法,所以其實並未真正的啟動一個子線程

 

 

 


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.