android: Service与SingleTop Activity移动到后台的区别是什么?

4


我正在开发一个应用程序,使用MediaPlayer类播放Steam音频。 我将其主要(播放器)活动声明为SingleTop。 此外,在按钮“返回”上,它会执行moveTaskToBack(true),这与按钮“Home”所做的相同。 因此,它只停留在后台并播放,如果用户想查看GUI,则只需再次启动应用程序(这不太方便)或单击特殊应用程序的通知。 通过菜单提供退出。
但是,在这种情况下使用服务的好处是什么? 肯定更复杂,我必须说。 即使在“后台”时实例化GUI也需要更多时间,我担心。

1个回答

4

来自Android文档:

活动 活动代表具有用户界面的单个屏幕。例如,电子邮件应用程序可能有一个显示新邮件列表的活动,另一个用于撰写电子邮件的活动,以及用于阅读电子邮件的另一个活动。

服务 服务是在后台运行以执行长时间操作或为远程进程执行工作的组件。服务不提供用户界面。例如,服务可能会在用户处于另一个应用程序时在后台播放音乐,或者它可能会在不阻止与活动交互的情况下通过网络获取数据。另一个组件(例如活动)可以启动服务并让其运行,或者绑定到它以与其交互。

此外

一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁。

如果Android操作系统资源不足,它可以销毁您的Activity,但不会销毁服务。

编辑: 你应该使用 startForeground() 来确保在资源不足的情况下您的Service不会被杀死。从文档中可以看到:

使此服务在前台运行,提供正在进行的通知以显示给用户。默认情况下,服务是后台运行的,这意味着如果系统需要杀死它们以回收更多内存(例如在Web浏览器中显示大页面),则它们可以被杀死而不会造成太大的损害。如果您的服务正在执行背景音乐播放等任务,而杀死您的服务会对用户产生影响,则可以设置此标志,以便用户注意到他们的音乐停止播放。


这是真的吗?系统会不会到需要终止服务的地步? - dongshengcn
在极少数情况下,当操作系统资源非常低时,您的服务可能会被关闭。这种情况从未发生在我身上。为了更加确保您的服务不会停止,您可以使用 startForeground() - Ovidiu Latcu
我找不到你所说的内容的任何参考资料。你在哪里看到的? :) - dongshengcn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接