Android - 高频后台任务

时间:2015-01-09 22:32:47

标签: android multithreading background task

我需要实现一个后台任务,需要每隔10秒更新一次UI。我尝试了以下方法,但大多数都失败了。

1)AlarmManager

我通过AlarmManager启动了意向服务。似乎AlarmManager仅适用于非常低的频率,例如几个小时。如果我将其设置为10秒,则UI不再响应。这是为什么?意图服务是否在单独的线程中运行?

2)具有无限循环的IntentService和Thread.sleep

应用程序在大约30秒后终止,UI根本没有响应。意图服务仅适用于非常短的后台任务吗?我发现了相关的矛盾信息。尽管意图服务应该在一个单独的线程中运行,为什么UI没有响应?

3)AsyncTask

使用AsyncTask时,UI仍保持响应。但由于某些原因,没有其他AsyncTask从UI启动。我听说过concurrend AsyncTasks的一些限制,但2应该不会太多?

4)自己的主题

那很有用。后台服务和UI功能齐全。但是,我读到在更新UI时直接使用线程是不好的做法。在此上下文中将数据发送到活动的最佳方法是什么?

对于需要更新UI并每10秒重新启动一次的后台任务,您有什么建议?

祝你好运!

1 个答案:

答案 0 :(得分:1)

由于您需要以重复的方式执行任务,我认为警报管理器是更好的选择。

这些是我的理由。

  1. 它允许您以设定的时间和/或间隔触发意图。
  2. 我们可以将它们与广播接收器结合使用,以启动服务并执行其他操作,即使当您的应用未运行时,即使设备本身处于睡眠状态
  3. 它们可以帮助您最小化应用的资源需求。 您可以在不依赖计时器或持续运行后台服务的情况下安排操作。
  4. 根据android文档,

      

    对于保证在生命周期内发生的定时操作   您的应用程序,而是考虑使用Handler类   与Timer和Thread结合使用。这种方法使Android更好   控制系统资源。