android 定時任務的幾種實現方式

2021-06-27 08:30:21 字數 2563 閱讀 7750

android裡有時需要定時迴圈執行某段**,或者需要在某個時間點執行某段**,這個需求大家第一時間會想到timer物件,沒錯,不過我們還有更好的選擇。

一、timer 實現定時任務

timer timer;

void oncreate()

};

timer = new timer();

timer.schedule(task, 1000);//開啟定時器,delay 1s後執行task

}void ondestroy()

二、handler實現定時任務

1.隔一段時間後執行某個操作,迴圈執行:

void oncreate()   

};

handler.postdelayed(runnable, 50);// 開啟定時器,50ms後執行runnable操作

}void ondestroy()

2.隔一段時間後執行某個操作一次,執行完後,不再執行:

void oncreate()                    

};

handler.postdelayed(runnable, 50);// 開啟定時器,50ms後執行runnable

}

三、alarmmanager實現精確定時操作

我們使用timer或者handler的時候會發現,delay時間並沒有那麼準。如果我們需要乙個嚴格準時的定時操作,那麼就要用到alarmmanager,alarmmanager物件配合intent使用,可以定時的開啟乙個activity,傳送乙個broadcast,或者開啟乙個service.

下面的**詳細的介紹了兩種定時方式的使用:

(1)在指定時長後執行某項操作

// 以下的**是《足球即時比分》中的**片段.

publicstaticalarmmanagerutil

/**

* 指定時間後進行更新賽事資訊(有如鬧鐘的設定)

* 注意: receiver記得在manifest.xml中註冊

* * @param ctx

*/

publicstaticvoidsendupdatebroadcast(

contextctx)

/**

* 取消定時執行(有如鬧鐘的取消)

* * @param ctx

*/

publicstaticvoidcancelupdatebroadcast(

contextctx)

}// 更新資料庫的廣播接收器

publicstaticclassupdatereceiverextendsbroadcastreceiver

}

(2)週期性的執行某項操作

publicstaticvoidsendupdatebroadcastrepeat(

contextctx)

取消定時器(鬧鐘)

/**

* 取消定時執行(有如鬧鐘的取消)

* * @param ctx

*/

publicstaticvoidcancelupdatebroadcast(

contextctx)

}

//------------------------------------自己-------------------------------------

啟動程式之後,跳轉到某個activity去。

void oncreate()                    

};

handler.postdelayed(runnable, 50);// 開啟定時器,50ms後執行runnable

}

注意:如果放到mainactivity的onresume()方法中,當mainactivity不可見了,再恢復到可見,又會呼叫此方法。

android中的定時任務

系統獲取時間的方法有兩個 注意 4.4以後alarm任務觸發時間將變的不精確,有可能延遲一段時間後任務才能得到執行。這是系統在耗電方面進行的優化。系統會自動檢測目前有多少個alarm任務存在。然後將觸發時間相近的幾個任務放在一起執行,這就可以大幅度減少cpu被喚醒的次數,從而有效延長電池的使用時間。...

linux定時任務 at定時任務

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...

linux實操 定時任務排程

crond任務排程 語法 crontab 選項 e編輯crontab定時任務 i查詢crontab任務 r刪除當前使用者所有的crontab任務 service crond restart 重啟任務排程 5個佔位符的說明 專案含義 範圍第乙個 一小時當中的第幾分鐘 0 59 第二個 一天當中的第幾小...