【问题标题】:Does an Android listener need to be running the whole time?Android 监听器是否需要一直运行?
【发布时间】:2019-04-03 14:12:29
【问题描述】:

我正在编写我的第一个独立 Android 应用。它将位于后台并响应操作系统生成的一些事件,根据用户的不同,在一天几次到一周几次之间。

来自 PC 编程背景,我认为我可能需要服务,但 Android Developers > Service 说:

什么是服务?

关于 Service 类的大部分困惑实际上都围绕着它是什么不是

  • 服务不是一个单独的进程。 Service 对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它会在与其所属的应用程序相同的进程中运行。
  • 服务不是线程。它本身并不是一种脱离主线程工作的方法(以避免应用程序无响应错误)。

应用程序不需要消耗任何资源,除非它正在侦听的事件之一发生。用户也应该不需要在设置后主动使用应用程序,只有当他们想要更改其设置时。

我的游戏似乎做的事情与我想要的相似。他们坐在后台,可以接收消息(例如,现在轮到我了),当我点击通知时,它会将游戏加载到内存中,这比已经在内存中要多几秒钟。

如果用户一个月没有使用应用程序的界面,我希望它仍然在运行(即使设备已重启)并响应事件但不出现在最近的应用程序列表中(假设一个月的时间足以把它推到最后)。理想情况下,我希望它在一秒钟内响应事件;它不必是近乎即时的。这样做的正常方式是什么?

  1. 一个应用程序(偶尔使用)和一个单独的“服务”进程/线程(持久性)
  2. 结合应用和“服务”(持久)
  3. 一个组合的应用程序和“服务”(通过事件加载到内存中)

【问题讨论】:

  • 在后台通知似乎是唯一的方法。在前台,您可以使用 Socket 或一些持久连接您需要检查 Background Execution Limits 。服务不能无限在后台运行。
  • 您可以注册事件监听器并在这些事件监听器中启动您的服务。无需服务始终在后台运行

标签: android service


【解决方案1】:

没有足够的声誉来发表评论,只是告诉你没有什么能阻止 Android 杀死你的服务,要在用户重启手机后重启你的服务,你可以添加一个广播接收器并收听 https://developer.android.com/guide/components/broadcasts

.此外,如果您不想在服务运行时显示通知,则必须使用后台服务而不是前台服务。希望这有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2022-11-10
    • 2013-06-10
    • 2018-03-18
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多