日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

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

AlarmManager簡介

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

項目功能簡介:

AlarmService模擬后臺任務,定時發起廣播

AlarmReceive啟動AlarmService,達到循環啟動Service的效果

通過Service和Receiver的死循環,確保后臺任務不被系統殺死。

1.AlarmService類

/**

* 一個定時任務

*/

public class AlarmService extends Service {

/**

* 每1分鐘更新一次數據

*/

private static final int ONE_Miniute=60*1000;

private static final int PENDING_REQUEST=0;

public AlarmService() {

}

/**

* 調用Service都會執行到該方法

*/

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

//這里模擬后臺操作

new Thread(new Runnable() {

@Override

public void run() {

Log.e("wj","循環執行了,哈哈."+ System.currentTimeMillis());

}

}).start();

//通過AlarmManager定時啟動廣播

AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);

long triggerAtTime=SystemClock.elapsedRealtime()+ONE_Miniute;//從開機到現在的毫秒書(手機睡眠(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) {

//循環啟動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"/>

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

總結

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

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