Android AlarmManager實現(xiàn)定時循環(huán)后臺任務(wù)
這篇文章使用AlarmManager實現(xiàn)了Android定時后臺循環(huán)任務(wù)。使用場景:項目需要app每隔一段時間就去服務(wù)端請求一次接口,從而更新本地保存的信息。
AlarmManager簡介
AlarmManager是Android中常用的一種系統(tǒng)級別的提示服務(wù),在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設(shè)定一個時間,然后在該時間到來時,AlarmManager為我們廣播一個我們設(shè)定的Intent,通常我們使用 PendingIntent。
項目功能簡介:
- AlarmService模擬后臺任務(wù),定時發(fā)起廣播
- AlarmReceive啟動AlarmService,達(dá)到循環(huán)啟動Service的效果
通過Service和Receiver的死循環(huán),確保后臺任務(wù)不被系統(tǒng)殺死。
1.AlarmService類
/**
* 一個定時任務(wù)
*/
public class AlarmService extends Service {
/**
* 每1分鐘更新一次數(shù)據(jù)
*/
private static final int ONE_Miniute=60*1000;
private static final int PENDING_REQUEST=0;
public AlarmService() {
}
/**
* 調(diào)用Service都會執(zhí)行到該方法
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//這里模擬后臺操作
new Thread(new Runnable() {
@Override
public void run() {
Log.e("wj","循環(huán)執(zhí)行了,哈哈."+ System.currentTimeMillis());
}
}).start();
//通過AlarmManager定時啟動廣播
AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
long triggerAtTime=SystemClock.elapsedRealtime()+ONE_Miniute;//從開機(jī)到現(xiàn)在的毫秒書(手機(jī)睡眠(sleep)的時間也包括在內(nèi)
Intent i=new Intent(this, AlarmReceive.class);
PendingIntent pIntent=PendingIntent.getBroadcast(this,PENDING_REQUEST,i,PENDING_REQUEST);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pIntent);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
2 AlarmReceive類
public class AlarmReceive extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//循環(huán)啟動Service
Intent i = new Intent(context, AlarmService.class);
context.startService(i);
}
}
3 啟動Service
public void startService(View view){
Intent intent=new Intent(this, AlarmService.class);
startService(intent);
}
別忘了AndroidMainfest中注冊廣播和服務(wù):
<service android:name=".service.AlarmService" android:enabled="true" android:exported="true"/> <receiver android:name=".receive.AlarmReceive"/>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android和服務(wù)器的URLEncodedUtils亂碼編碼問題的解決方案
今天小編就為大家分享一篇關(guān)于android和服務(wù)器的URLEncodedUtils亂碼編碼問題的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
解決Android studio 2.3升級到Android studio 3.0 后apt報錯問題
原來項目在Android studio 2.3一切正常,升級到了3.0之后報錯,不支持apt了,其實解決這個問題很簡單,只需要修改兩點(diǎn)內(nèi)容就可以,下面腳本之家小編帶領(lǐng)大家通過本文學(xué)習(xí)吧2017-12-12
Android之ArcSlidingHelper制作圓弧滑動效果
這篇文章主要介紹了Android之ArcSlidingHelper制作圓弧滑動效果,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Android Secret Code(輸入字符彈出手機(jī)信息)詳解
這篇文章主要介紹了Android Secret Code(輸入字符彈出手機(jī)信息)詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11
Android獲取當(dāng)前位置的經(jīng)緯度數(shù)據(jù)
這篇文章主要介紹了Android獲取當(dāng)前位置的經(jīng)緯度數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2016-02-02
Android自定義view系列之99.99%實現(xiàn)QQ側(cè)滑刪除效果實例代碼詳解
這篇文章給大家介紹android自定義view系列之99.99%實現(xiàn)QQ側(cè)滑刪除效果,本文介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友參考下吧2016-09-09

