導航:首頁 > 操作系統 > android停止thread

android停止thread

發布時間:2024-10-17 19:03:03

『壹』 android thread 後台線程 怎麼設置隨著主線程的結束而結束

關於線程的結束有以下幾點:
1.不要手動調用stop方法強行終止一個線程,這種方式不安全。

通過幫助文檔,我們可以知道,Android的線程類本身就提供了一些公共方法去結束線程。
final void stop()
This method is deprecated. because stopping a thread in this manner is unsafe and can leave your application and the VM in an unpredictable state
但是,通過說明我們可以看到,這些方法Android本身都是不推薦使用的,通過這種方式結束線程是不安全的。
2.線程里run函數短,執行完後線程會自行銷毀,不用手動去終止。
3.手動停止,通過在run里設置標志先停止運行,再調用Thread.interrupt();注意,在run沒有停止時調用.interrupt()沒有效果。

『貳』 android thread join和stop的區別

stop() 方法是立即停止當前線程, 這樣停止的後果是導致stop後的語句無法執行, 有可能資源未釋放或者在同步塊中調用此方法會導致同步數據會不完整. 所以這樣的方法並不安全. 強列建議不要使用此函數來中斷線程。
interrupt()方法沒有stop那麼的粗暴,因為可以用catch捕捉到InterruptedException這個異常。一個線程處於了阻塞狀態(如線程調用了thread.sleep、thread.join、thread.wait以及可中斷的通道上的
I/O
操作方法後可進入阻塞狀態),方法調用處拋出InterruptedException異常,拋出異常是為了線程從阻塞狀態醒過來,並在結束線程前讓程序員有足夠的時間來處理中斷請求。
join() 方法作用是:「等待該線程終止」,這里需要理解的就是該線程是指的主線程等待子線程的終止。也就是在主線程調用了join()方法後面的代碼,只有等到子線程結束了才能執行

『叄』 android開發 thread線程怎麼銷毀

thread有destroy方法。一般的,都是讓這個線程走到頭就自動銷毀了,要自己設計讓這個線程走完退出

『肆』 android如何終止一個正在運行的子線程

線程像這樣:
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線程

當你在後台使用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停止thread相關的資料

熱點內容
51單片機控制pwm程序 瀏覽:295
汽車壓縮機串氣可以修么 瀏覽:633
30天學會全部語法pdf 瀏覽:52
java反編譯修補bug 瀏覽:614
如何修改伺服器ftp地址 瀏覽:119
雲伺服器如何用c盤分d盤 瀏覽:597
蘋果的單片機 瀏覽:804
程序員喝麻辣燙 瀏覽:140
安卓怎麼玩微軟的游戲 瀏覽:54
安卓如何在桌面同時操作好幾個app 瀏覽:72
美國app在哪裡看 瀏覽:320
java文件內容追加 瀏覽:622
為什麼下載壓縮包會變成文檔 瀏覽:727
自我安慰程序員的話 瀏覽:369
android備份程序 瀏覽:713
建設銀行亞洲手機app哪裡下載 瀏覽:502
桌面有一個文件夾圖標變透明了 瀏覽:382
vb文件如何加密 瀏覽:238
中行選擇編譯環境 瀏覽:248
編程打左右雙引號 瀏覽:719