我目前正在为android os开发一个应用程序,该应用程序需要不时从远程服务器获取数据。

因为即使实际的前端应用程序未运行,也应执行此“更新”,所以我实现了在系统启动时启动的远程服务。现在我需要安排一个计时器来开始更新。

“计时器”级适合此工作吗?并且如果为“是”:“正常” Timer()与由Timer(true)作为“守护程序”启动的Timer()有什么区别?

http://developer.android.com/reference/java/util/Timer.html对此不是很有帮助:(

编辑:

好的-我看到有比我预期更多的方法。澄清:

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

  • 我认为这里有人知道适用于Android的“newsrob”吗?我想实现的功能与newsrob-updateservice几乎相同。

    最佳答案

    使用AlarmManager。这使您可以设置时间表,然后退出组件。您的代码不需要保留在内存中,并且会在警报响起时触发。

    我实现了在系统启动时启动的远程服务

    Please don't do that仅用于计划任务。使用AlarmManager

    如果您希望在手机处于睡眠状态时完成工作,则需要使用_WAKEUP警报类型,并可能使用类似 WakefulIntentService 的名称来使设备在工作完成时保持唤醒状态。

    09-10 08:01
    查看更多