Ⅰ android用timer做定時任務,崩潰的原因
在做定時任務的時候,有的同學可能能會用到Timer這個定時任務的輔助類,
但是使用它會有潛在的風險,風險如下,
(1)時間計算不準確問題
因為Timer是以絕對時間計算定時任務的,會受到系統時間的影響,如果在任務執行期間,更改了系統時間,那麼會
導致時間計算不準確問題,導致任務沒用按找預定的時間執行。
(2)只能單任務執行
簡單講就是,只能一次執行一個任務,如果前一個任務沒有執行完成,後一個任務是無法並行執行的,只能等待前一個任務執行完成
才能執行。也有可能會出現這樣的結果,前一個任務執行的時間太長,後幾個任務時間短,可能在一個時間段內執行了多個任務,任務又
沒有按照我們要執行的時間執行。
(3)非檢查異常導致非同步任務終止
Timer當在執行的過程中遇到非檢查異常的時候,會導致本次任務失敗,並且接下來的任務也無法被執行,Timer將會終止執行,這不是
我們要的結果,我們需要一套恢復機制。
java5以後可以用下面的這個類來替代Time,並且解決了以上三個問題
java.util.concurrent.ScheledThreadPoolExecutor
那麼在Android上呢,可以用 java.util.concurrent.ScheledThreadPoolExecutor,也可以用Handler機製做,
但是不建議使用Timer
Ⅱ android 關於定時執行問題
Handler.postDelayed的Integer參數代表是毫秒,你給的1000意思是一秒鍾,如果你是重復執行某一任務,延遲時間是上一次任務執行完畢,再等待十秒,你雖然延遲的是一秒,但可能gps(),代碼執行需要9秒。
Ⅲ 安卓定時器Handler如何關閉
{
publicTimeCounts(longmillisInFuture,longcountDownInterval){
super(millisInFuture,countDownInterval);//參數依次為總時長,和計時的時間間隔
}
@Override
publicvoidonFinish(){//計時完畢時觸發
}
@Override
publicvoidonTick(longmillisUntilFinished){//計時過程顯示
//倒計時數可以寫在這兒
}
}
TimeCounts timeCounts = new TimeCounts(30000, 1000);//總時長30s,間隔1s
timeCounts.start();//倒計時開始
timeCounts.cancel();//取消倒計時
Ⅳ java/安卓關於Timer,task,schele重新設置定時任務時間的問題
先cancel,然後再重新實例化、設定時間
Ⅳ 安卓手機定時任務軟體
可以先在手機日歷中選擇新建事件,然後在對應日期設置提醒,接著再選擇重復以及提醒的頻率和時間即可。你也可以在手機自帶的便簽或備忘錄中添加日程提醒,這樣它也可以准時提醒你。或者你也可以在手機上使用敬業簽,因為它支持自定義周期重復提醒的功能,而且除了支持公歷日期提醒外,還能按照農歷日期設置提醒。
Ⅵ 安卓定時任務軟體
沒用過定時打電話,發簡訊的那種的,好像是有的。我一直用這個,是切換飛行模式,情景模式,WIFI的。
http://shouji..com/soft/item?docid=4385360&f=search_app_%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%40list_1_title%402
Ⅶ 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為多久執行一次;
個人推薦用方法一,畢竟安卓系統自帶的,並且安卓不適合加定時器,如果處理不當一直執行的話,要麼卡,要麼程序崩潰。還有發布版本可能審核不通過。
Ⅷ Android 定時執行任務的幾種方法
alarmManager
Timer
Handler
等
Ⅸ android定時器alarmmanager和timer的區別
Java的Timer類可以用來計劃需要循環執行的任務。
簡單的說,一個Timer內部封裝裝了「一個Thread」和「一個TimerTask隊列」,這個隊列按照一定的方式將任務排隊處理。封裝的Thread在Timer的構造方法調用時被啟動,這個Thread的run方法按照條件去循環這個TimerTask隊列,然後調用TimerTask的run方法。
但是,如果CPU進入了休眠狀態,那麼這個thread將會因為失去CPU時間片而阻塞,從而造成我們需要的定時任務失效。上述定時任務失效的場景分析:假設定時任務的條件是到了時間xx:yy才能執行,但由於cpu休眠造成線程阻塞的關系,當前系統時間超過了這個時間,即便CPU從終端中恢復了,那麼由於條件不滿足,定時任務在這一次自然就失效了。
它需要用WakeLock讓CPU 保持喚醒狀態。這樣會大量消耗手機電量,大大減短手機待機時間。這種方式不能滿足需求。
AlarmManager是Android 系統封裝的用於管理RTC的模塊,RTC(Real Time Clock) 是一個獨立的硬體時鍾,可以在 CPU 休眠時正常運行,在預設的時間到達時,通過中斷喚醒CPU。這意味著,如果我們用 AlarmManager 來定時執行任務,CPU 可以正常的休眠,只有在需要運行任務時醒來一段很短的時間。
Ⅹ 如何在android應用中定時進行操作
在手機上安裝定時達人軟體
定時達人有自己的網站,相關應用在各大應用商城也有。可以通過apk進行安裝,可以從應用商店下載安裝。我是從google play上下載安裝的。
添加新任務
設置任務——設置時間
設置任務——給任務取個名字
設置任務——添加新任務
選擇運行程序一欄
設置任務——選擇定時打開的應用程序
點擊應用程序,選擇讀者。
保存設置
這里需要點兩次保存,之後就回到了定時達人主頁面。
8
通過立即執行進行測試設置效果
單擊定時打開讀者一欄,在彈出下拉框中選擇立即執行來立即執行任務。在設置正確的情況下讀者應用被打開,通知欄會有相應通知提示。
在之前的設置步驟中,保持了默認的循環方式,即周循環,一周的每一天都選中。按照設置,每一天的指定時間都可以自動打開相應應用。