首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -高频后台任务

Android -高频后台任务
EN

Stack Overflow用户
提问于 2015-01-10 06:32:47
回答 1查看 399关注 0票数 2

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

1) AlarmManager

我通过AlarmManager开始了一个意图服务。似乎AlarmManager只适用于非常低的频率,比如几个小时。如果我将其设置为10秒,则UI不再响应。为什么会这样呢?intent服务不是在单独的线程中运行吗?

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

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

3) AsyncTask

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

4)自己的线程

这招奏效了。后台服务和UI功能齐全。然而,我读到在更新UI时直接使用线程是不好的做法。在这种情况下,将数据发送到活动的最佳方式是什么?

对于需要更新UI并且大约每10秒重新发生一次的后台任务,您有什么建议?

诚挚的问候!

EN

回答 1

Stack Overflow用户

发布于 2015-01-10 06:42:17

由于您需要以循环方式执行任务,因此我认为Alarm Manager是更好的选择。

这就是我的理由。

  1. 它允许你在设定的时间和/或间隔触发意图。
  2. 我们可以将它们与广播接收器一起使用来启动服务和执行其他操作,即使你的应用程序不在运行,即使设备本身是asleep.
  3. They,也可以帮助你最小化应用程序的资源需求。您可以在不依赖计时器或连续运行后台services.

的情况下安排操作

根据android文档,

对于保证在应用程序的生命周期内发生的计时操作,请考虑将

类与Timer和Thread类结合使用。这种方法让安卓可以更好地控制系统资源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27870341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档