最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android AlarmManager實現(xiàn)定時循環(huán)后臺任務

 更新時間:2021年04月19日 09:33:57   作者:IT_默  
這篇文章主要為大家詳細介紹了Android AlarmManager實現(xiàn)定時循環(huán)后臺任務,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

AlarmManager簡介

AlarmManager是Android中常用的一種系統(tǒng)級別的提示服務,在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設(shè)定一個時間,然后在該時間到來時,AlarmManager為我們廣播一個我們設(shè)定的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() {
  }

  /**
   * 調(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;//從開機到現(xiàn)在的毫秒書(手機睡眠(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中注冊廣播和服務:

<service
  android:name=".service.AlarmService"
  android:enabled="true"
  android:exported="true"/>
<receiver android:name=".receive.AlarmReceive"/>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

道真| 鄯善县| 长武县| 霍邱县| 聂拉木县| 荥经县| 裕民县| 乡宁县| 太原市| 英德市| 咸阳市| 丹巴县| 东明县| 瑞金市| 隆安县| 花莲市| 西平县| 辽阳市| 南充市| 英超| 凌源市| 灵山县| 崇信县| 个旧市| 姚安县| 武穴市| 吉林省| 鄄城县| 天津市| 安阳县| 咸阳市| 昂仁县| 周口市| 上栗县| 大名县| 远安县| 临洮县| 修武县| 金华市| 和顺县| 大城县|