我需要实现一个后台任务,需要每隔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秒重新启动一次的后台任务,您有什么建议?
祝你好运!
答案 0 :(得分:1)
由于您需要以重复的方式执行任务,我认为警报管理器是更好的选择。
这些是我的理由。
根据android文档,
对于保证在生命周期内发生的定时操作 您的应用程序,而是考虑使用Handler类 与Timer和Thread结合使用。这种方法使Android更好 控制系统资源。