gpt4 book ai didi

android - 绑定(bind)与在android中启动服务的优缺点

转载 作者:太空宇宙 更新时间:2023-11-03 10:18:06 24 4
gpt4 key购买 nike

是的,我知道这是重复的:Android Service : bind or start? .但正如我在那里评论的那样,给出的答案是有问题的。

Google Dev Tutorial ,建议绑定(bind)为 ...对于需要将 Activity 绑定(bind)到在后台播放音乐的自身服务的音乐应用程序来说效果很好。 而我刚刚链接到的 SO 答案说这是我需要启动而不是绑定(bind)的非常好的服务。

现在,我理解导航应用程序的论点,但显然对于音乐流媒体之类的事情还没有定论。那么有人可以再澄清一点吗?

我可以无休止地绑定(bind)并无休止地开始这一事实表明这两种方法的存在是有原因的。更具体地说,例如,为什么音乐流媒体是两者的一个很好的例子?

同样,我的主要问题是:绑定(bind)与启动的优缺点是什么?换句话说:比较和对比 bindService 和 startService。

抱歉重复,但我正在尝试尽可能完整地捕捉到这一点,这样我可能会得到非常好的答案。

最佳答案

至于我工作和阅读有关 bindServicestartService 的内容,我正在解释以下内容。

首先他们两个有不同的生命周期。

bindService(mIntent, mConnection, BIND_AUTO_CREATE);

如果您只是使用带有BIND_AUTO_CREATE 标志的bindService 来创建服务和绑定(bind),它会为您创建一个服务并将其绑定(bind)到您。一旦您 unbindService 服务生命周期将停止。 IE。很可能在主流程的 onStop 阶段。因此,您可以使用 bindService 创建和绑定(bind)服务,如果您只在需要时需要它,而在不需要时关闭。就像您提到的导航应用程序一样。这不会遵循 onCreate > onStartCommand

的常规服务生命周期
startService(mIntent);
bindService(mIntent, mConnection, 0);

如果即使退出 Activity 也想运行该服务,则必须使用 startService 并且可以使用带有 0 之类标志的 bindService 绑定(bind)到它或 BIND_ABOVE_CLIENT(意思是,服务比正在运行的客户端 Activity 更重要)。现在您可以多次绑定(bind)到该服务并取消绑定(bind),但该服务将继续运行(直到您终止它)。这遵循 onCreate > onStartCommand

您对音乐应用程序的混淆基本上与该应用程序的使用有关:在 Google Dev 中,他们可能已经注意到当您关闭 Activity 时音乐会停止并退出应用程序(例如 Youtube)。 [绑定(bind)和解绑就够了]

而且 SO 可能已经注意到,即使在停止 Activity (如 Google Play 音乐)后音乐也应该继续播放。 [为此你必须启动一个服务并永远运行它]。您可以在需要时通过调用 this.stopSelf() 或从 Activity 中调用 stopService 来停止服务。

所以你不能说 bindService 比启动的服务更好。

使用 bindService 创建的服务在停止 Activity 后将不会运行。

关于android - 绑定(bind)与在android中启动服务的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841755/

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