后台服务和前台服务有啥区别?

Posted

技术标签:

【中文标题】后台服务和前台服务有啥区别?【英文标题】:What is the difference between a background and foreground service?后台服务和前台服务有什么区别? 【发布时间】:2011-04-02 02:38:41 【问题描述】:

我目前正在编写我的第一个 android 应用程序,并且不断遇到对后台和前台服务的引用。由于我打算在我的应用程序中使用服务,因此我希望能够澄清两者以及它们的使用方式。

【问题讨论】:

【参考方案1】:

@亚历克斯 每当用户根据应用程序收到通知通知时,用户就会了解前台服务。

【讨论】:

您正在回复其他用户对已接受答案的评论,不是吗?你认为你的帖子也回答了页面顶部的问题吗?在这种情况下,请edit 重新措辞并使其更加明显。【参考方案2】:

Foreground Service 用于用户与应用程序交互以及Service 正在执行用户可见的操作时。 Background Service 用于即使用户关闭应用程序(从最近删除)和 Service 正在执行用户不可见的操作(例如从服务器下载数据、从 ContentProvider 加载数据等)。而 Foreground Service 不太可能被内存不足的系统杀死。

【讨论】:

【参考方案3】:

前景:该过程依赖于 onPause() 和 onResume()...即您播放音乐播放器并按下暂停和播放

背景:在没有用户交互的情况下运行的过程,即接收消息、来电、接收邮件或设置警报。这里使用的方法是onStart()和onStop()。

例如,在您的手机上查看。在早上 6:30 创建闹钟。当系统时钟到达早上 6:30 时,它会触发。要杀死报警服务,只需进入菜单-->设置-->应用程序-->运行服务-->点击停止服务。即使您的系统达到不会触发的时间,它也会停止警报服务。

【讨论】:

最好附上相关官方文档的链接,比如这个:developer.android.com/guide/components/services【参考方案4】:

也许这会回答你的问题:

已启动的服务可以使用 startForeground API 来放置服务 处于前台状态,系统认为它是某物 用户主动意识到,因此不是杀戮的候选者 当内存不足时。默认情况下,服务是后台的,这意味着 如果系统需要杀死它们以回收更多内存(例如 在网络浏览器中显示一个大页面),它们也可以被杀死 伤害很大。

更多信息可以找到here

【讨论】:

如何知道您的服务是否真的作为前台服务启动? logcat 中是否有任何踪迹? 服务是在前台还是后台取决于两个因素:服务状态和你启动它的方式。 developer.android.com/reference/android/app/…

以上是关于后台服务和前台服务有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

旧服务 vs 后台服务 vs 前台服务

前端路由和后台路由有什么区别?

Android四大组件——Service后台服务前台服务IntentService跨进程服务无障碍服务系统服务

json对象和json字符串有啥区别啊

在前台服务中的位置,具有后台权限 VS 仅在应用程序中权限 Android Q

手机和电脑的后台程序是否与前台程序同时运行 只是被前台覆盖了