導航:首頁 > 操作系統 > 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相關的資料

熱點內容
用什麼給盒子安裝APP 瀏覽:383
如何傳到本地伺服器 瀏覽:211
程序員保就業的培訓機構 瀏覽:247
采購壓縮機製冷劑工具 瀏覽:332
seleniumpython斷言 瀏覽:432
php網頁布局 瀏覽:377
代理伺服器顯示不可用什麼意思 瀏覽:566
工行app哪裡能查開戶行信息 瀏覽:831
滑鼠點擊返回上一個文件夾 瀏覽:553
qq文件怎麼用電腦解壓 瀏覽:718
走路app賺錢哪個好 瀏覽:282
javavcf 瀏覽:76
手機哪個app可以代替身份證上網 瀏覽:340
如何在中國版我的世界開伺服器 瀏覽:157
四川加密優盤在哪裡 瀏覽:916
900D加密是幾成幾 瀏覽:821
vfp添加命令按鈕 瀏覽:504
光遇ios服怎麼在安卓玩 瀏覽:813
中國大學程序員就業前景 瀏覽:50
win10鏡像壓縮包解壓方法 瀏覽:981