在Android上每天运行一次计划任务

时间:2017-02-18 09:35:28

标签: android android-alarms mobile-development android-jobscheduler

我的Android应用程序可以帮助用户通过在特定时间发送通知来关注他们的日常计划。使用JobScheduler可以轻松解决此任务。它似乎简单,轻便,是最新的解决方案。

我所挣扎的是如何每天计划所有通知。我需要运行代码来检查用户的每日计划,并在每天午夜默默地安排通知。到目前为止,我发现了两种方法

使用JobService。可以使用

重新安排
  

public final void jobFinished(JobParameters params,boolean needsReschedule)

但我认为这是一个糟糕的解决方案,因为

  1. 我需要将完成的工作视为失败,尽管它很成功

  2. 日程安排时间将呈线性/指数增长,这对我来说是不可接受的。

  3. 另一种方法是使用AlarmManager ,但它也有一些缺点

    1. 根据文件
    2.   

      当设备处于睡眠状态时,会保留已注册的警报(如果设备在此期间关闭,则可以选择将设备唤醒),但如果设备关闭并重新启动,则会被清除。

      这是不可接受的,因为我的用户可能会错过一些重要的内容。

      1. 我读过很快就会杀死电池。这是真的吗?
      2. 我在文档中找到的其他解决方案并不像我需要的那样。 (https://developer.android.com/topic/performance/scheduling.html

        任何想法如何每天运行计划任务,以便轻松且有弹性重启?

2 个答案:

答案 0 :(得分:0)

使用JobService很好。您无需重新安排工作。只需根据需要创建新工作。

答案 1 :(得分:0)

我也有调度警报的问题。更糟糕的是,从Android 6开始,会出现打盹模式,延迟警报执行。

请查看:https://developer.android.com/training/monitoring-device-state/doze-standby.html

对于警报,您可以拥有一个启动完整侦听器,并在重新启动时重新安排警报。如果您在闹钟触发期间不需要网络连接,请从上面的链接中查看将您的应用调整为Doze