gpt4 book ai didi

Android - 高频后台任务

转载 作者:行者123 更新时间:2023-11-29 01:36:12 25 4
gpt4 key购买 nike

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

1) 报警管理器

我通过 AlarmManager 启动了一个 Intent 服务。 AlarmManager 似乎只适用于非常低的频率,比如几个小时。如果我将它设置为 10 秒,那么 UI 将不再响应。这是为什么? Intent 服务不是在单独的线程中运行吗?

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

应用程序在大约 30 秒后终止,用户界面根本没有响应。 Intent 服务是否只针对非常短的后台任务?我发现了关于此的矛盾信息。为什么 UI 没有响应,尽管 Intent 服务应该在单独的线程中运行?

3) 异步任务

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

4) 自己的话题

成功了。后台服务和用户界面功能齐全。但是,我读到在更新 UI 时直接使用线程是不好的做法。在这种情况下,将数据发送到 Activity 的最佳方式是什么?

对于需要更新 UI 并大约每 10 秒重新出现的后台任务,您有什么建议?

最好的问候!

最佳答案

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

这些是我的理由。

  1. 它允许您在设定的时间和/或间隔触发 Intent。
  2. 我们可以将它们与广播接收器结合使用以启动服务并执行其他操作,即使您的应用未运行,即使设备本身处于 sleep 状态也是如此。
  3. 它们可以帮助您最大限度地减少应用的资源需求。 您可以在不依赖计时器或持续运行后台服务的情况下安排操作。

根据安卓文档,

For timing operations that are guaranteed to occur during the lifetime of your application, instead consider using the Handler class in conjunction with Timer and Thread. This approach gives Android better control over system resources.

关于Android - 高频后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com