【问题标题】:How to Realize an Update Service is Running in the Background?如何实现更新服务在后台运行?
【发布时间】:2010-10-08 08:51:15
【问题描述】:

我目前正在开发一款适用于 Android 操作系统的应用,该应用会显示一些数据。为确保此数据是最新的,应用程序需要不时从远程服务器获取更新。 由于数据不经常更改,因此应每周进行一次更新。我想让用户能够选择更新的工作日和白天(并且可以选择完全禁用此功能)。

问题是:即使用户此时不使用手机,即使手机当前处于睡眠状态,即使手机最近重新启动且应用程序尚未启动,也应该执行此更新还没有。

我首先想到的是一个远程服务,它在系统启动时启动,确定运行更新的时间,设置一个计时器,然后等待/休眠以触发计时器。

现在,有人告诉我我应该使用闹钟计时器或某种处理程序...我对这个主题的了解越多,似乎存在的方法就越多。

现在,我有点不知道哪种方法最适合我......所以这就是我需要的:

  • 我想在指定的时间执行一些代码。
  • 此计时器用于在未来 7 天触发代码执行。 (即每周在给定的工作日和时间)
  • 如果手机处于“睡眠”状态(屏幕变暗),代码应该在不唤醒手机的情况下运行。
  • 运行代码时,不应启动任何活动。即屏幕上没有弹出应用程序。
  • 执行的代码应该从 Internet 获取一些数据。如果此时没有可用的互联网连接,则应将计时器设置为休眠 30 分钟,然后重试。
  • 完成代码执行后,定时器将设置为下一个间隔,即7天后。
  • 计时器应在系统启动时启动,例如,如果我重新启动手机,计时器应确定执行代码的下一个日期并安排计时器。这必须在没有任何用户交互的情况下工作! (即没有应用程序本身启动)
  • 当“睡眠”时,线程/服务/定时器/任何东西都应该尽可能不消耗任何系统资源...
  • 我需要的是一个简单的 unix cronjob。

    我想这里有人知道安卓的“newsrob”吗?我想实现的和 newsrob-updateservice 差不多。

  • 【问题讨论】:

      标签: java android service cron daemon


      【解决方案1】:

      Android Service + Broadcast Receiver + Alarm Service 将解决你的目的 -

      您的服务将从广播接收器调用,在广播接收器中,您应该注册各种事件 - BOOT_RECEIVER 、 ACTION_USER_PRESENT ,它们将负责您的 ALARM 重置和更新任务。

      谢谢。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 2014-06-26
      • 2015-07-13
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多