在android開發中,經常會用到執行緒和timer,如果沒有主動關閉它們,當程式結束時,執行緒並沒有被銷毀,而是一直在後台執行著,當我們重新啟動應用時,又會重新啟動乙個執行緒,周而復始,你啟動應用次數越多,開啟的執行緒數就越多,你的機器就會變得越慢。還會導致意思不到的錯誤。
1、執行緒的銷毀
hanlder是執行緒與activity通訊的橋梁,利用handler接收到任務執行緒,放到任務佇列裡面派對執行。
//呼叫該任務執行緒的run() 方法執行任務執行緒。
handler updatebarhandler =new handler();
handler.post(runnable thread);
//移除handler裡的任務執行緒,呼叫執行緒的stop()方法,銷毀執行緒。
handler.removecallbacks(runnable thread);
乙個簡單的例子如下:
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方法,使整個程式(所有執行緒)終止。
Android中的Timer和Handler的使用
timer timer主要用於執行一次性任務或者按照某個時間間隔迴圈執行某個任務,但對於迴圈執行來說,又分為兩種情況。第一種是fixed period execution,呼叫schedule timertask,delay,period 方法即可,這種迴圈執行任務的特點是,下一次執行的開始時間是從...
Android的執行緒和執行緒池
執行緒是作業系統排程的最小單元 執行緒是乙個受限制的系統資源,即不能無限制的產生。執行緒的建立銷毀都有相應的開銷 時間片輪轉的方式排程每個執行緒 用途來講分為主線程和子執行緒 主線程 更新ui 子執行緒 耗時操作 在android中扮演執行緒的角色 thread,asynctask,intentse...
Android 計時器Timer用法
先看段 這個例項化了乙個handler,handler可以通過message在多個執行緒通訊,我這裡做的是定時reclen加1,然後以一定的格式,顯示到rectime上 ui執行緒上的操作 final handler handler new handler super.handlemessage m...