How to set a persistent/regular schedule in Android?

邮差的信 提交于 2019-12-18 12:41:00

问题


How can I execute an action (maybe an Intent) on every specified time (e.g. Every day on 5AM)? It has to stay after device reboots, similar to how cron works.

I am not sure if I can use AlarmManager for this, or can I?


回答1:


If you want it to stay after the device reboots, you have to schedule the alarm after the device reboots.

You will need to have the RECEIVE_BOOT_COMPLETED permission in your AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

A BroadcastReceiver is needed as well to capture the intent ACTION_BOOT_COMPLETED

<receiver android:name=".BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

Lastly, override the onReceive method in your BroadcastReceiver.

public class BootcompletedReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
     //set alarm
  }
}

Edit: Look at the setRepeating method of AlarmManager to schedule the 'Android cron'.




回答2:


Using the BuzzBox SDK you can schedule a cron job in your App doing:

SchedulerManager.getInstance()
.saveTask(context, "0 8-19 * * 1,2,3,4,5", YourTask.class);

Where "0 8-19 * * 1,2,3,4,5" is a cron string that will run your Task once an hour, from 8am to 7pm, mon to fri. You Task can be whatever you want, you just need to implement a doWork method. The library will take care of rescheduling on reboot, of acquiring the wake lock and on retrying on errors.

More info about the BuzzBox SDK here...



来源:https://stackoverflow.com/questions/4252907/how-to-set-a-persistent-regular-schedule-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!