當前位置:首頁 » 安卓系統 » android線程退出

android線程退出

發布時間: 2023-01-08 23:05:19

『壹』 android 關閉程序的時候結束線程

可以自己定義一個變數來控制線程的運行
如Boolean b=true;
public void run() {
while(b){
//獲取網路數據的函數
pvdata = ParseString(url);
Thread.sleep(20000);
}
};
//在你要結束該線程的時候你可以設置b=false;線程自己退出,這樣是最好的方式

『貳』 Android如何停止線程的方式

一種是調用它裡面的stop()方法,另一種就是你自己設置一個停止線程的標記
(推薦這種)
如果使用Thread.stop方法停止線程,不能保證這個線程是否完整的運行完成一次
run方法;但是如果使用停止的標記位,那麼可以保正在真正停止之前完整的運行完
成一次run方法;第二中方式,但是對於麻煩的動作,解決方式是這一個全局變數,每個復雜的動作都進行判斷一下

『叄』 android需要考慮結束線程嗎

  • Android終止線程的方法前提

    線程對象屬於一次性消耗品,一般線程執行完run方法之後,線程就正常結束了,線程結束之後就報廢了,不能再次start,只能新建一個線程對象。但有時run方法是永遠不會結束的。

  • 三種方法可以結束線程:

  1. 使用退出標志,使線程正常退出,也就是當run方法完成後線程終止。

  2. 使用interrupt()方法中斷線程。

  3. 使用stop方法強行終止線程(不推薦使用,可能發生不可預料的結果)。

  • 使用退出標志終止線程

    使用一個變數來控制循環,例如最直接的方法就是設一個boolean類型的標志,並通過設置這個標志為true或false來控制while循環是否退出。代碼如下:

  • 使用stop方法終止線程

    程序中可以直接使用thread.stop()來強行終止線程,但是stop方法是很危險的,就象突然關閉計算機電源,而不是按正常程序關機一樣,可能會產生不可預料的結果,不安全主要是:thread.stop()調用之後,創建子線程的線程就會拋出ThreadDeatherror的錯誤,並且會釋放子線程所持有的所有鎖。

其他注意事項:

前兩種方法都可以實現線程的正常退出,也就是要談的優雅結束線程,第3種方法相當於電腦斷電關機一樣,是不安全的方法。

『肆』 Android 中如何關閉線程

在android中開啟的線程用Thread.stop()來關閉是不會真正關閉的,當我們再次start線程的時候,會產生異常:Thread is already started. 針對這個問題可以在線程的run方法里,加一個判斷標志。例如: class TestThread extends Thread{ public void run(){ while(isTrue){ //做你要做的事。}}}在需要關閉的時候,將flag置為false: isTrue=false;並且將運行的線程對象掛起然後置為null(假設開啟的線程對象為mTestThread) : mTestThread.interrupt(); mTestThread=null; 再次用到的時候進行如下處理即可: if(mTestThread==null){

『伍』 Android怎麼結束一個線程

在Java語言中,安全結束線程的方法就是「讓線程的自身流程執行完」。
出現「僵屍線程」的原因:1.線程在死循環中執行。2.線程阻塞。

很明顯,你的ReadHandlerThread線程發生了線程阻塞。

dis.readFully(b),你在這里調用了一個阻塞方法,由於socket的另一端一直沒有發送數據,ReadHandlerThread線程一直阻塞在了這里,等待接收完136位元組的數據。136位元組沒有接收完,readFully方法將一直處於阻塞狀態。

解決方法,設置socket的等待超時值,而不是無限等待。

『陸』 android中線程假退出的處理

朋友你好,
感謝你對我們團隊的支持與信任,
針對你提出的這個問題,Google官方給出的解決方法是:
在線程中做個標志boolean cancel = false;線程每一步操作之前都檢測if(cancel),用戶取消的時候cancel = true;
但是,這個方法不精確,線程還是會跑一段時間等上個操作結束,所以嚴格上來說沒有根本的解決辦法,因此只能期待以後的版本中能有更好的解決辦法。
希望能夠對你有所幫助。

『柒』 如何中斷Android線程

當你在後台使用Thread或者AsyncTask來處理一些耗時的操作時,可能想要對這些線程加以控制,其中包括中斷線程。 很多情況下,當用戶啟動程序的時候,一個後台運行的線程會同時啟動去載入內容。但是,當用戶離開程序時,線程應該被打斷,因為現在用戶已經不再關注程序了,同時也不再關注線程處理的結果,而線程是要佔用系統的資源的,如果不及時中斷線程,會導致系統資源的浪費。 除此之外,你可以使用 Thread.interrupt()或者AsyncTask.cancel() 方法,但是這不會馬上中斷線程,因此,只能在自己的線程中實現中斷並退出。 在許多情況下,後台運行的線程都有一個主循環,因此你可以在循環中判斷線程是否被中斷,若被中斷,則退出循環,從而結束進程。例如一個線程下載線程,可以通過 isInterrupted() 方法判斷當前線程是否被中斷。 thread=newThread(){publicvoidrun(){while(!isInterrupted()&&hasMoreDataToDownload()){ downloadAndWriteSomeMore();}if(isInterrupted()){ ();}else{callBack();}}}thread.start(); thread.interrupt(); 如果線程被中斷,則調用 () 函數,刪除沒有完成下載的文件。當線程沒有被中斷,則調用callBack()函數,可以使用handler發送下載完成的信息。 如果你的線程中沒有這樣一個主循環,例如只是執行一個很耗時的SQL查詢操作,可以在查詢操作之後調用 來判斷是否需要結束線程。

『捌』 android中的線程該怎麼停掉

線程不要直接停止,那樣會產生線程不安全的。
你要配合Handler來用。
當下載完之後調用handler.sendEmptyMessage()方法。

或者你換成AsyncTask來實現線程下載。

熱點內容
php分割文件 發布:2025-07-05 02:22:15 瀏覽:478
sql平均成績語句 發布:2025-07-05 02:11:41 瀏覽:277
java離線 發布:2025-07-05 02:11:35 瀏覽:66
php變數賦值給變數 發布:2025-07-05 02:10:56 瀏覽:558
javaequals方法 發布:2025-07-05 01:57:23 瀏覽:98
sqlsever外鍵 發布:2025-07-05 01:41:04 瀏覽:738
鳳凰衛士加密軟體 發布:2025-07-05 01:39:36 瀏覽:636
桌面軟體編程 發布:2025-07-05 01:32:17 瀏覽:993
編譯後的程序叫啥擴展名是啥 發布:2025-07-05 01:18:29 瀏覽:165
強轉編程 發布:2025-07-05 01:09:50 瀏覽:886