Как установить постоянное / регулярное расписание в Android? - PullRequest
6 голосов
/ 23 ноября 2010

Как я могу выполнить действие (возможно, Намерение) в любое указанное время (например, каждый день в 5 утра)? Он должен оставаться после перезагрузки устройства, подобно тому, как работает cron.

Я не уверен, смогу ли я использовать для этого AlarmManager, или я могу?

Ответы [ 2 ]

10 голосов
/ 23 ноября 2010

Если вы хотите, чтобы он оставался после перезагрузки устройства, вы должны запланировать будильник после перезагрузки устройства.

Вам потребуется разрешение RECEIVE_BOOT_COMPLETED в вашем AndroidManifest.xml

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

Также необходим BroadcastReceiver для захвата намерения ACTION_BOOT_COMPLETED

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

Наконец, переопределите метод onReceive в BroadcastReceiver.

public class BootcompletedReceiver extends BroadcastReceiver {

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

Редактировать: посмотрите на setRepeating метод AlarmManager, чтобы запланировать «Android cron».

1 голос
/ 16 марта 2011

Используя BuzzBox SDK, вы можете запланировать работу cron в вашем приложении, выполнив:

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

Где "0 8-19 * * 1,2,3,4,5" - это строка cron, которая будет запускать вашу задачу один раз в час, с 8:00 до 19:00, с понедельника по пятницу. Ваша задача может быть любой, какой вам нужно, вам просто нужно реализовать метод doWork. Библиотека позаботится о перепланировании при перезагрузке, получении блокировки пробуждения и повторных попыток при ошибках.

Подробнее о BuzzBox SDK можно узнать здесь ...

...