【问题标题】:android: Service vs SingleTop Activity moved to background - whats the difference?android: Service vs SingleTop Activity 移到后台 - 有什么区别?
【发布时间】:2011-07-25 16:47:59
【问题描述】:


我目前正在开发一个使用 MediaPlayer 类播放蒸汽音频的应用程序。我会将其主要(播放器)活动声明为 SingleTop。同样在“返回”按钮上,moveTaskToBack(true) 的作用与“主页”按钮的作用相同。所以它只是停留并在后台播放,如果用户想要查看 gui,他只需再次启动应用程序(不太方便)或单击特殊应用程序的通知。通过菜单提供退出。
但是在这种情况下使用服务而不是活动有什么好处?我不得不说,开发肯定会更复杂。恐怕即使在“在后台”实例化 GUI 也会花费更多时间。

【问题讨论】:

    标签: android service android-activity media-player


    【解决方案1】:

    来自 Android 文档:

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

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

    还有

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

    Android 操作系统可以在资源耗尽时销毁您的 Activity,但不会销毁服务。

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

    使此服务在前台运行,提供在此状态下向用户显示的持续通知。默认情况下,服务是后台服务,这意味着如果系统需要杀死它们以回收更多内存(例如在 Web 浏览器中显示大页面),可以将它们杀死而不会造成太大伤害。如果终止您的服务会对用户造成干扰,您可以设置此标志,例如您的服务正在执行背景音乐播放,这样用户会注意到他们的音乐是否停止播放。

    【讨论】:

    • 这是真的吗?系统会达到需要终止服务的程度吗?
    • 在真正孤立的情况下,您的服务将被关闭,当操作系统运行的资源非常低时。它从来没有发生在我身上。为了确保您的服务不会停止,您可以使用startForeground()
    • 我找不到您的声明的任何参考。你在哪里读到的? :)
    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2015-08-17
    • 2018-03-24
    • 2011-05-23
    • 2018-04-29
    • 2017-06-01
    • 2015-10-05
    相关资源
    最近更新 更多