㈠ android中怎麼讓Timer隨程序關閉而關閉
寫個全局變數,然後在你的那個方法裡面實例化,需要取消的時候就用對象名.cancel,加個非空判斷小心空指針異常。
第一步,得到Timer的實例化對象
Timer timer= new Timer() ;
第二步,實例化TimerTask對象
TimerTask timerTask = new TimerTask(){
publicvoid run(){
//Doing something
實例化TimerTask對象的時候,需要重寫它的run()方法,然後在這個方法體內增加需要執行的具體操作。比如 輸出一句話,發送一個消息之類的。
第三步,啟動定時器
Timer.schele(TimerTask, delay, period) ;
這樣創建並啟動一個定時器的工作就完成,但是在實際使用的過程中,可能會需要一些其他方面的操作手段。
因為在項目程序運行過程中,某個時刻定時器的參數被修改,比如delay,period。為了及時的使用最新的正確的數據,就需要對已經存在的定時器進行關閉並且使用新的參數重新創建並啟動。
第一步,取消TimerTask,並在定時器Timer隊列中將其刪除。
㈡ Android中計時器總結
在 java.util.Timer 的源碼中看到Timer的構造方法
我們要用到的schele()方法如下:
另外Timer調用task還有以下方法
兩秒鍾之後timer_tv_1開始顯示當前時間並每一秒更新一次
別忘了在onDestroy()中
㈢ android用timer做定時任務,崩潰的原因
在做定時任務的時候,有的同學可能能會用到Timer這個定時任務的輔助類,
但是使用它會有潛在的風險,風險如下,
(1)時間計算不準確問題
因為Timer是以絕對時間計算定時任務的,會受到系統時間的影響,如果在任務執行期間,更改了系統時間,那麼會
導致時間計算不準確問題,導致任務沒用按找預定的時間執行。
(2)只能單任務執行
簡單講就是,只能一次執行一個任務,如果前一個任務沒有執行完成,後一個任務是無法並行執行的,只能等待前一個任務執行完成
才能執行。也有可能會出現這樣的結果,前一個任務執行的時間太長,後幾個任務時間短,可能在一個時間段內執行了多個任務,任務又
沒有按照我們要執行的時間執行。
(3)非檢查異常導致非同步任務終止
Timer當在執行的過程中遇到非檢查異常的時候,會導致本次任務失敗,並且接下來的任務也無法被執行,Timer將會終止執行,這不是
我們要的結果,我們需要一套恢復機制。
Java5以後可以用下面的這個類來替代Time,並且解決了以上三個問題
java.util.concurrent.ScheledThreadPoolExecutor
那麼在Android上呢,可以用 java.util.concurrent.ScheledThreadPoolExecutor,也可以用Handler機製做,
但是不建議使用Timer
㈣ android怎麼設置一個定時的任務
我知道的有三種方法;
方法一:可以通過android自帶的Handler機制,裡面有new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//延遲的時間到了執行
}
},延遲的時間);
方法二:可以通過java裡面的線程來寫,new Thread().sleep(延遲時間);時間到了會繼續執行;
方法三:java定時器(有很多方法)例如:
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
System.out.println("-------設定要指定任務--------");
}
}, long delay,long period);
delay延遲的時間,period為多久執行一次;
個人推薦用方法一,畢竟安卓系統自帶的,並且安卓不適合加定時器,如果處理不當一直執行的話,要麼卡,要麼程序崩潰。還有發布版本可能審核不通過。