Android銷燬執行緒的方式
1、執行緒的銷燬
Hanlder是執行緒與Activity通訊的橋樑,利用handler接收到任務執行緒,放到任務佇列裡面派對執行。
//呼叫該任務執行緒的run() 方法執行任務執行緒。
Handler updateBarHandler =new handler();
handler.post(Runnable Thread);
//移除handler裡的任務執行緒,呼叫執行緒的stop()方法,銷燬執行緒。
handler.removecallbacks(Runnable Thread);
一個簡單的例子如下:
import Android.app.Activity;
import Android.os.Bundle;
import Android.os.Handler;
import Android.util.Log;
public class HandlerThread extends Activity {
private static final String TAG = "HandlerThread";
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
public void run() {
//為了方便 檢視,我們用Log列印出來
Log.e(TAG, Thread.currentThread().getName() + "Thread run");
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通過Handler啟動執行緒
mHandler.post(mRunnable);
}
@Override
protected void onDestroy() {
//將執行緒銷燬掉
mHandler.removeCallbacks(mRunnable);
super.onDestroy();
}
}
2、Timer的銷燬
預設情況下,只要一個程式的timer執行緒在執行,那麼這個程式就會保持執行。當然,你可以通過以下四種方法終止一個timer執行緒:
a)呼叫timer的cancle方法。你可以從程式的任何地方呼叫此方法,甚至在一個timer task的run方法裡;
b)讓timer執行緒成為一個daemon執行緒(可以在建立timer時使用new Timer(true)達到這個目地),這樣當程式只有daemon執行緒的時候,它就會自動終止執行;
c)當timer相關的所有task執行完畢以後,刪除所有此timer物件的引用(置成null),這樣timer執行緒也會終止;
d)呼叫System.exit方法,使整個程式(所有執行緒)終止。
原文連結:http://www.linuxidc.com/Linux/2011-10/46145.htm
//-------------------------------------------------------------------------------------
終止執行緒執行,一般都是設定一個bool變數,線上程run方法內部判斷該變數的值,以便隨時結束執行緒的run()執行並退出。該bool值的改變,是線上程外部來操作的.
這到是個好辦法,但是我有多了執行緒,外部的一個bool變數改變了,所有的執行緒都變了,這樣還是不能控制某一個執行緒呀
搞個陣列或list,對應儲存每個執行緒的bool值
採用了類似於的辦法,用資料庫來控制的
//------------------------------------------------------------------------------------
執行緒像這樣: 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時間之內呼叫。也就是子執行緒會睡一會,醒一會,睡一會,醒一會,要在子執行緒睡著的時候呼叫。
//-----------------------------------------------------------------------------
http://wenwen.soso.com/z/q318950994.htm
相關文章
- Android執行緒的建立與銷燬Android執行緒
- Android的執行緒和執行緒池Android執行緒
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- jdk建立執行緒的方式JDK執行緒
- NPTL 執行緒同步方式執行緒
- 【java】【多執行緒】建立執行緒的兩種常用方式(2)Java執行緒
- Android多執行緒之執行緒池Android執行緒
- 建立執行緒的三種方式執行緒
- 【Java】執行緒的建立方式Java執行緒
- 執行緒建立的四種方式執行緒
- Android程式框架:執行緒與執行緒池Android框架執行緒
- Android執行緒篇(二)Java執行緒池Android執行緒Java
- Android執行緒管理之ExecutorService執行緒池Android執行緒
- java--執行緒池--建立執行緒池的幾種方式與執行緒池操作詳解Java執行緒
- java執行緒實現方式Java執行緒
- 程式執行緒排程方式執行緒
- 執行緒池建立方式執行緒
- 多執行緒-多執行緒方式3的求和案例執行緒
- 走進Java Android 的執行緒世界(二)執行緒池JavaAndroid執行緒
- Java中實現執行緒的方式Java執行緒
- java執行緒建立的兩種方式Java執行緒
- 面試-實現多執行緒的方式面試執行緒
- 執行緒池建立的幾種方式執行緒
- java的執行緒、建立執行緒的 3 種方式、靜態代理模式、Lambda表示式簡化執行緒Java執行緒模式
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- Java執行緒(九):Condition-執行緒通訊更高效的方式Java執行緒
- 多執行緒-匿名內部類的方式實現多執行緒程式執行緒
- android程式與執行緒詳解二:執行緒Android執行緒
- Android執行緒池Android執行緒
- Android中的執行緒池Android執行緒
- Android的程式,執行緒模型Android執行緒模型
- Android的程式與執行緒Android執行緒
- Android中執行緒的使用Android執行緒
- 多執行緒-多執行緒方式3的思路及程式碼實現:方式3依賴於執行緒池存在的執行緒
- 執行緒池的五種狀態及建立執行緒池的幾種方式執行緒
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- Android 執行緒優化之執行緒池shutdown方法Android執行緒優化
- Java多執行緒實現方式Java執行緒