如何在Android中设置持久/常规计划?

时间:2010-11-23 04:57:31

标签: android cron scheduled-tasks scheduling scheduler

如何在每个指定时间(例如每天早上5点)执行一个动作(可能是一个意图)?它必须在设备重启后停留,类似于cron的工作方式。

我不确定我是否可以使用AlarmManager,或者我可以吗?

2 个答案:

答案 0 :(得分:10)

如果您希望它在设备重新启动后停留,则必须在设备重新启动后安排警报。

您需要获得AndroidManifest.xml中的RECEIVE_BOOT_COMPLETED权限

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

最后,覆盖BroadcastReceiver中的onReceive方法。

public class BootcompletedReceiver extends BroadcastReceiver {

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

编辑:查看AlarmManager的setRepeating方法来安排'Android cron'。

答案 1 :(得分:1)

使用BuzzBox SDK,您可以在App中安排cron作业:

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

其中“0 8-19 * * 1,2,3,4,5”是一个cron字符串,每小时运行一次Task,从早上8点到晚上7点,星期一到星期五。 You Task可以是你想要的任何东西,你只需要实现一个doWork方法。该库将负责重新启动时的重新安排,获取唤醒锁定以及重试错误。

More info about the BuzzBox SDK here...