我需要实现一个后台任务,需要大约每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秒重新发生一次的后台任务,您有什么建议?
诚挚的问候!
发布于 2015-01-10 06:42:17
由于您需要以循环方式执行任务,因此我认为Alarm Manager是更好的选择。
这就是我的理由。
的情况下安排操作
根据android文档,
对于保证在应用程序的生命周期内发生的计时操作,请考虑将
类与Timer和Thread类结合使用。这种方法让安卓可以更好地控制系统资源。
https://stackoverflow.com/questions/27870341
复制相似问题