我应该为我的 Android 应用程序使用 Service 还是 IntentService?

2023-12-25

如果我错了,请纠正我:

1) A Service用于在后台执行长时间任务。服务在 UI 线程中运行,因此如果任务很长,它可能会冻结我们的 UI。只要我们告诉服务停止,服务就会继续独立于应用程序运行。

2) An 意向服务另一方面用于在单独的线程中执行短任务。当它完成任务时它会自动终止。

我必须做什么:

1)每5秒检查一次位置

2) 如果位置发生变化,将其发送到服务器并使用新的位置值更新 UI

让我困惑的是:

我应该使用Service or 意向服务因为我需要在 5 秒后连续执行此操作,并且不希望我的 UI 线程变得无响应。

该应用程序将用于跟踪车辆。


我不会使用IntentService因为一旦作业完成,它就会自行完成,并且您需要在 5 秒后再次重新安排它。要重新安排它,您需要一些复杂的外部Timer与应用程序关联的机制Context或者,更糟糕的是,使用AlarmManager这会疯狂地消耗你的电池。

我会使用带有Timer内部用于调度TimerTasks每 5 秒一次,并且每次TimerTask无论如何,在工作线程上执行我都会获得位置并发出 Http 请求。

只是不要忘记cancel服务上的计时器onDestroy方法,否则你会泄漏Service实例。

EDIT我刚刚注意到这个and Update the UI with new location values...继续使用Service,但要么使用AsyncTask用于发送请求doInBackground然后发送广播消息onPostExecute,要么继续使用相同的TimerTask机制但使用Handler它是用 UI Looper 实例化的,并在该处理程序上发出 UI 更新请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该为我的 Android 应用程序使用 Service 还是 IntentService? 的相关文章

随机推荐

  • 当 SQL 查询受限时与调用整行相比,性能有何优势?

    通过在查询中仅选择所需字段而不是查询整行 可以带来多少性能优势 例如 如果我有一行 10 个字段 但只需要显示 5 个字段 是否值得只查询这 5 个字段 此限制带来的性能优势与稍后需要返回并在 sql 查询中添加字段的风险相比有何不同 您需
  • 如何在 Objective C 中将类对象转换为 json 字符串

    1 我创建类对象 然后使用此代码为我的类添加值 csJastorPollQuestion pq csJastorPollQuestion alloc initWithID 01 Name AAA 2 我在 NSLog 中显示了 csJast
  • Flask Restful NoAuthorizationError 缺少授权标头

    我使用 Python 3 6 在生产模式下在服务器上运行 Flask Restful 并访问需要 jwt 身份验证的端点 但我不断收到 NoAuthorizationError Missing Authorization Header 错误
  • InputText PrimeFaces 不应用 maxlength

    我将 PrimeFaces 3 4 与 PrimeFaces Mobile 0 9 3 结合使用 我在 inputText 属性中指定了 maxlength 但它没有在 HTML 中呈现 我的代码
  • x87 精度如何影响平方根?

    我编写了一些代码来测试 fsqrt 函数 但结果对我来说并不完全有意义 这是代码 delphi 中 uses mmsystem var rand longint 123456789 function rng longint asm imul
  • 如何将vi中的代码复制到剪贴板

    我知道如何在VI中复制 但我未能将其复制到其他应用程序中 这意味着我未能将它们复制到剪贴板中 我怎样才能做到这一点 附 以便更加倾斜 我还想问如何将剪贴板中的内容复制到vi 编辑 我正在使用 MacO 运行 Vim 看来 yy 在这里不起作
  • Numpy:点(a,b)和(a * b).sum()之间的差异

    对于一维 numpy 数组 这两个表达式应该产生相同的结果 理论上 a b sum a sum dot a b a sum 后者使用dot 并且速度更快 但哪一个更准确呢 为什么 接下来是一些上下文 我想使用 numpy 计算样本的加权方差
  • 代码是HttpClient或servlet API来解析Cookie头

    Apache HttpClient 或 servlet API 中是否有任何现有代码可以解析 Cookie 标头并从包含 name1 value1 name2 value2 的字符串中获取 Cookie 列表 编写代码来解析它似乎并不太难
  • 以编程方式将证书添加到个人存储

    我正在开发的项目包含一个与 WCF Web 服务通信的 MVC 网站 并通过 Windows 身份进行身份验证 我有一个身份委托证书 我正在尝试以编程方式添加该证书 要手动执行此操作 我在 mmc 中打开证书管理单元 将 pfx 文件导入到
  • 错误代码:3685。正则表达式的参数非法

    我试图使用下面的 SQL 语句在 MySQL 8 0 中找到确切的数字 SELECT FROM rulebook node body WHERE body value REGEXP lt DVP gt 当我运行上面的 SQL 语句时 出现以
  • python 3.8 venv缺少激活命令

    我在用户的主目录下编译了 Python 3 8 1 configure prefix home a user python3 8 enable shared 当我尝试使用 venv 时 我得到 python3 m venv test env
  • 用于选择最近的重复项的 SQL 查询

    我有一个值表 例如 每个条目都存储了一个日期 Name Age 支付金额 Date 有人可以帮助我编写一个查询 仅显示特定年龄范围内任何人的最近付款 例如 如果我有 5 个条目 并且想要所有 20 25 岁人群的最新付款 Allan 45
  • Python CGIHTTPServer 崩溃并显示“OSError:[Errno 13] 权限被拒绝”

    我正在从我的主目录运行以下命令 python m CGIHTTPServer 这会运行服务器 但是当我尝试访问 cgi bin 目录中的脚本时 我得到 Traceback most recent call last File usr lib
  • Mysql 查询仅返回到午夜

    我有一个查询 它从数据库中查找过去二十分钟的结果 现在我知道如何以小时 天等为单位进行查找 但是是否可以只查找早至当天午夜的结果 那么什么时候运行查询以及什么时候它只回溯到午夜呢 SELECT FROM ip stats WHERE dat
  • LINQ 执行查询 - 错误

    我在执行查询时遇到问题 错误消息 指定的演员无效 我尝试这样做 var qq db ExecuteQuery
  • 有没有可以调整图像大小的库

    我目前正在使用 FFImageLoading 包进行缓存等以在用户界面上显示 我不确定 FFImageLoading 是否具有调整图像本身大小的功能 以便我可以保存它并通过互联网发送 这很简单 var stream await ImageS
  • 如何为装箱特征对象实现“serde::Serialize”?

    我在尝试为结构创建通用向量时遇到了问题 这是我的第一次尝试 derive Serialize struct Card sections Vec
  • 如何确保使用 Task.Run 创建新线程?

    以下代码 99 的情况下都会引发异常 如何确保使用 Task Run 创建新线程 int e void Main Task Run gt e Thread CurrentThread ManagedThreadId Task Run gt
  • Docker 无法使用 PHP 连接到 mariadb

    我是 Docker 新手 一直试图弄清楚如何使用 PHP 连接到我的 MariaDB 容器 但没有成功 我尝试在 stackoverflow 和 google 上搜索 但找不到任何有用的信息 所以我希望你们能帮助我 奇怪的是 当我尝试使用
  • 我应该为我的 Android 应用程序使用 Service 还是 IntentService?

    如果我错了 请纠正我 1 A Service用于在后台执行长时间任务 服务在 UI 线程中运行 因此如果任务很长 它可能会冻结我们的 UI 只要我们告诉服务停止 服务就会继续独立于应用程序运行 2 An 意向服务另一方面用于在单独的线程中执