java - 如何在 android 或 : what exactly are daemon threads in android? 中安排一些代码执行

标签 java android service timer daemon

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

因为这个“更新”应该在实际的前端应用程序没有运行时执行,我实现了一个在系统启动时启动的远程服务。现在我需要安排一个计时器来开始更新。

“定时器”类适合这项工作吗?如果是"is":“普通”Timer() 和由 Timer(true) 作为“守护进程”启动的有什么区别?

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

编辑:

好的 - 我看到有比我预期的更多的方法来做到这一点。澄清:

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

  • 我需要的几乎是一个简单的 unix cronjob。

我想这里有人知道 android 的“newsrob”吗?我想实现的与 newsrob-updateservice 几乎相同。

最佳答案

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

i implemented a remote service that is started on system boot

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

如果您希望在手机处于 hibernate 状态时完成工作,您将需要使用 _WAKEUP 闹钟类型,也许使用像我的 WakefulIntentService 这样的东西在工作完成时保持设备处于唤醒状态。

关于java - 如何在 android 或 : what exactly are daemon threads in android? 中安排一些代码执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883246/

相关文章:

android - 如何从 Preference Activity 中为 Listpreference 编写点击事件?

java - 在 Eclipse Java EE 上安装 Android SDK

android - onBind() 永远不会在服务中被调用

java - Hibernate将数据保存到数据库SQLException

java xml document.getTextContent() 保持为空

android:在设备或模拟器上捕获视频

c# - 在服务中生成随机日期和时间

Android - 将事件通知传递给可能不活跃的 Activity 的有效方法?

java - 从另一个 JVM 加载 JVM 中现有的类对象

java - 开始 Java SudokuSolver FileNotFoundException