gpt4 book ai didi

android服务(继续在后台运行让我很困惑)

转载 作者:行者123 更新时间:2023-11-30 03:47:57 24 4
gpt4 key购买 nike

我对安卓服务有些困惑根据文档它将继续在主线程的后台运行。它不在不同的线程中运行。

我的疑惑是 keep on running in background 是什么意思。它会一次又一次地执行 onStartCommand() 吗?我真的很困惑这一行(继续在后台运行)

如果它不会一次又一次地执行 onStartCommand 那么继续运行有什么好处,如果它一次又一次地执行 onStartCommand 那么它会越来越多地使用 cpu

图像中突出显示了让我感到困惑的行,请看一下 enter image description here

最佳答案

正如评论中已经指出的那样,为了您的特定目的(监视设置,此处:音量),您可以采用非轮询方法,例如这里:Is there a broadcast action for volume changes?

一般来说,在像 Android 这样的现代(虽然不完美)环境中,几乎从来没有有理由主动轮询一些东西,因为没有人能承受浪费这么多资源,而且,您总是有错过事件的风险,因此您会想更频繁地进行轮询——这是一场您的实现总是会失败的竞赛。

再次声明,以下陈述明显错误:

  • Service 在您应用的主/UI 线程上运行。如果您认为是这种情况,那么您需要阅读有关 android:process 的信息 list 的 activity 标签的属性。还。即使您不让您的服务在单独的进程中运行,短语a service runs on your app's main/UI thread 暗示您的主/UI 线程被您的服务阻塞。当然,希望没有人离开它;只需在应用的主/UI 线程上处理服务事件并将任务委托(delegate)给工作线程就很容易,这是每个理智的实现都应该做的。

  • 使用START_STICKY,您可以确保您的服务在启动后始终运行。当然,这是幼稚的,意味着声称这一点的人并没有完全理解这个标志的含义以及对 process lifecylce for Android Services 的描述。 . Quote: 请注意,这意味着您的服务大部分时间都在运行,如果内存压力过大,它可能会被系统杀死。 如果您阅读该部分,您就会知道 Android 正在运行如果它需要内存用于另一个具有更高优先级的任务并且您的服务与用户当前正在查看的应用程序无关,则随时终止您正在运行的服务的进程,恕不另行通知。换句话说,如果系统内存不足并且用户打开一个需要大部分系统内存的电子表格,那么后台互联网广播媒体播放器和所有花​​哨的东西可能会被杀死,期间.

关于android服务(继续在后台运行让我很困惑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644792/

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