6

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

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

4

2 回答 2

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

于 2010-11-23T07:49:10.303 回答
1

使用 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 点到晚上 7 点。你的任务可以是任何你想要的,你只需要实现一个 doWork 方法。该库将负责重新安排重新启动、获取唤醒锁和重试错误。

更多关于 BuzzBox SDK 的信息在这里...

于 2011-03-16T00:17:20.183 回答