日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android定时循环,Android AlarmManager实现定时循环后台任务

發(fā)布時間:2023/12/13 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android定时循环,Android AlarmManager实现定时循环后台任务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這篇文章使用AlarmManager實現(xiàn)了Android定時后臺循環(huán)任務。使用場景:項目需要app每隔一段時間就去服務端請求一次接口,從而更新本地保存的信息。

AlarmManager簡介

AlarmManager是Android中常用的一種系統(tǒng)級別的提示服務,在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設定一個時間,然后在該時間到來時,AlarmManager為我們廣播一個我們設定的Intent,通常我們使用 PendingIntent。

項目功能簡介:

AlarmService模擬后臺任務,定時發(fā)起廣播

AlarmReceive啟動AlarmService,達到循環(huán)啟動Service的效果

通過Service和Receiver的死循環(huán),確保后臺任務不被系統(tǒng)殺死。

1.AlarmService類

/**

* 一個定時任務

*/

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() {

}

/**

* 調用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;//從開機到現(xiàn)在的毫秒書(手機睡眠(sleep)的時間也包括在內

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中注冊廣播和服務:

android:name=".service.AlarmService"

android:enabled="true"

android:exported="true"/>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持找一找教程網(wǎng)。

總結

以上是生活随笔為你收集整理的android定时循环,Android AlarmManager实现定时循环后台任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。