欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android AlarmManager實(shí)現(xiàn)定時(shí)循環(huán)后臺(tái)任務(wù)

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

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

AlarmManager簡(jiǎn)介

AlarmManager是Android中常用的一種系統(tǒng)級(jí)別的提示服務(wù),在特定的時(shí)刻為我們廣播一個(gè)指定的Intent。簡(jiǎn)單的說(shuō)就是我們?cè)O(shè)定一個(gè)時(shí)間,然后在該時(shí)間到來(lái)時(shí),AlarmManager為我們廣播一個(gè)我們?cè)O(shè)定的Intent,通常我們使用 PendingIntent。

項(xiàng)目功能簡(jiǎn)介:

  • AlarmService模擬后臺(tái)任務(wù),定時(shí)發(fā)起廣播
  • AlarmReceive啟動(dòng)AlarmService,達(dá)到循環(huán)啟動(dòng)Service的效果

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

1.AlarmService類

/**
 * 一個(gè)定時(shí)任務(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都會(huì)執(zhí)行到該方法
   */
  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {

    //這里模擬后臺(tái)操作
    new Thread(new Runnable() {
      @Override
      public void run() {
        Log.e("wj","循環(huán)執(zhí)行了,哈哈."+ System.currentTimeMillis());
      }
    }).start();

    //通過(guò)AlarmManager定時(shí)啟動(dòng)廣播
    AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
    long triggerAtTime=SystemClock.elapsedRealtime()+ONE_Miniute;//從開(kāi)機(jī)到現(xiàn)在的毫秒書(shū)(手機(jī)睡眠(sleep)的時(shí)間也包括在內(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)啟動(dòng)Service
    Intent i = new Intent(context, AlarmService.class);
    context.startService(i);
  }
}

3 啟動(dòng)Service

public void startService(View view){
    Intent intent=new Intent(this, AlarmService.class);
    startService(intent);
  }

別忘了AndroidMainfest中注冊(cè)廣播和服務(wù):

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論