【问题标题】:Periodically run a service in the background定期在后台运行服务
【发布时间】:2023-03-22 22:22:01
【问题描述】:

我们正在设计一款用户以订阅方式使用的应用。当用户支付特定期间的费用时,我们的服务器会发出一张在该期间有效的收据。该应用程序旨在“离线”使用,因此它只会连接互联网以从服务器获取收据。

当处于“离线”模式时,应用会等待付费持续时间 #-of 天,直到它要求用户再次付费。我们在实现这一点时遇到了问题。

我们首先尝试使用始终运行的后台服务。但在阅读了https://stackoverflow.com/a/2682130/5753416http://www.androidguys.com/2009/09/09/diamonds-are-forever-services-are-not/ 之后,我们决定使用AlarmManger 来安排定期警报以检查付款。

当用户更改时间/日期时,我们现在面临警报问题。我们正在收听 Intent.ACTION_TIME_CHANGED 和 Intent.ACTION_DATE_CHANGED 广播,但在将日期设置为过去时,这不是广播

我的问题是实现类似功能的正确方法是什么。任何建议表示赞赏。

编辑

issues with the broadcast

ASOP bug issue

【问题讨论】:

  • 你能分享一些代码吗?
  • 哪一部分是必要的?我问这个是因为该功能没有在“一个地方”实现。但是我们在收听广播时使用了标准的东西。
  • 您正在收听这些 Intent.ACTION_TIME_CHANGED 和 Intent.ACTION_DATE_CHANGED 广播的部分和位置
  • 我已经用问题更新了我的问题。

标签: android android-service android-alarms


【解决方案1】:

您需要做的一个解决方案是检查电话的正常运行时间,以便您可以将闹钟安排在某个时间,例如一个小时或取决于您的频率。因此,您需要做的是检查电话正常运行时间 + 支付给用户的持续时间,如果通过,然后取消他的订阅。您需要检查的唯一额外的事情是,一旦连接网络以访问您的服务,手机是否会重新启动。

【讨论】:

  • 我遇到的问题是如果你“倒带”时钟它不会触发。例如:如果当前时间是 8 点,我将闹钟设置为在 9 点一小时后触发。如果用户将时间设置回 5,则闹钟将在 4 小时内不触发。当日期也倒带时,情况只会变得更糟。这就是我尝试收听 TIME_SET 和 DATE_SET 广播的原因。但是当时钟回到过去时,这不起作用。我已在我的问题中包含有关该问题的链接。
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 2015-09-11
相关资源
最近更新 更多