How to set a persistent/regular schedule in Android?

后端 未结 2 773
伪装坚强ぢ
伪装坚强ぢ 2020-12-30 13:52

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 n

相关标签:
2条回答
  • 2020-12-30 14:05

    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'.

    0 讨论(0)
  • 2020-12-30 14:11

    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...

    0 讨论(0)
提交回复
热议问题