后台服务和前台服务有什么区别?

64

我目前正在编写我的第一个 Android 应用程序,我经常遇到关于后台和前台服务的参考。由于我打算在我的应用程序中使用服务,所以我希望对这两者之间进行澄清并了解它们的用途。

我目前正在编写我的第一个Android应用程序,我经常遇到后台服务和前台服务的相关内容。由于我打算在我的应用程序中使用服务,因此我希望能够明确区分这两种服务,并了解它们的用途。请注意,后台服务是没有用户界面的服务,可以在后台持续运行,即使应用程序已被关闭。而前台服务则具有与用户进行交互的通知功能,通常在执行需要长时间运行的任务时使用。
3个回答

58
也许这会回答你的问题:
通过使用 startForeground API,已启动的服务可以将自己置于前台状态,系统会认为它是用户正在积极意识到的内容,因此在低内存时不会被杀死。默认情况下,服务是后台运行的,这意味着如果系统需要回收更多内存(例如显示网页浏览器中的一个大页面),则可以杀死它们而不会造成太大的影响。
更多信息可在此处找到。

你如何知道你的服务是否真正作为前台服务启动?在logcat中有什么迹象吗? - Alex
2
服务是在前台还是后台运行取决于两个因素:服务的状态和启动方式。http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle - m-ric

58

前台: 该过程依赖于 onPause() 和 onResume() 方法...例如您正在播放音乐,按下暂停和播放按钮。

后台: 这个过程在没有用户交互的情况下运行,例如接收消息、来电、接收邮件或设置闹钟。这里使用的方法是 onStart() 和 onStop()。

例如,在您的手机上进行检查。创建一个在早上6:30响起的闹钟。当系统时间到达6:30时,它会触发。为了停止闹钟服务,只需进入菜单-->设置-->应用程序-->运行服务-->点击停止服务。即可在您的系统到达不会触发时停止闹钟服务。


1
最好附上相关官方文档的链接,例如:https://developer.android.com/guide/components/services - Yoav Feuerstein

5

前台服务用于用户与应用程序进行交互,以及当服务正在执行对用户可见的任务时。当用户关闭应用程序(从最近使用列表中移除)并且服务正在执行对用户不可见的任务时,使用后台服务,例如从服务器下载数据、从ContentProvider加载数据等。同时,前台服务不太可能因为内存不足而被系统杀死。


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