如何在 Android 中设置持久/定期计划?

Posted

技术标签:

【中文标题】如何在 Android 中设置持久/定期计划?【英文标题】:How to set a persistent/regular schedule in Android? 【发布时间】:2011-05-14 06:23:54 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

如果您希望它在设备重启后保持不变,您必须在设备重启后安排闹钟。

您需要在 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”。

【讨论】:

如果您的应用程序被用户或 Android 系统杀死,这将无济于事。一旦这样做,您的警报就会被取消注册,并且您将永远不会再被呼叫。 我找不到任何关于通过 cron 表达式设置重复的信息!【参考方案2】:

使用 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 方法。库将负责重新安排重启、获取唤醒锁和重试错误。

More info about the BuzzBox SDK here...

【讨论】:

以上是关于如何在 Android 中设置持久/定期计划?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Paypal 中设置定期付款和一次性付款的混合

如何在 Flutter 中设置定时器来定期更新 API 数据

如何在codeigniter中设置持久登录?

如何在具有管理员权限的 Windows 任务计划程序中设置 Powershell 脚本?

如何在 Android 中设置 libsvm?

如何在 Android 应用中设置全息黑暗主题?