我目前正在编写我的第一个 Android 应用程序,并且不断遇到对后台和前台服务的引用。由于我打算在我的应用程序中使用服务,因此我希望能够澄清两者之间以及它们的使用方式。
前台:该过程依赖于 onPause() 和 onResume()...即您播放音乐播放器并按下暂停和播放
后台:无需用户交互即可运行的进程,即接收消息、来电、接收邮件或设置闹钟。这里使用的方法是onStart()和onStop()。
例如,在手机上查看。在早上 6:30 创建闹钟。当系统时钟到达早上 6:30 时,它就会触发。要终止警报服务,只需进入菜单-->设置-->应用程序-->运行服务-->单击停止服务即可。即使您的系统达到不会触发的时间,它也会停止警报服务。
也许这能回答你的问题:
启动的服务可以使用startForeground API来放置服务 处于前台状态,系统认为它是某种东西 用户主动意识到,因此不是杀戮的候选者 当内存不足时。默认情况下服务是后台的,这意味着 如果系统需要杀死它们以回收更多内存(例如 在网络浏览器中显示一个大页面),它们可以被杀死而不需要太 伤害很大。
更多信息可以在这里找到
Foreground Service
正在执行用户可见的操作时,使用
Service
。当用户关闭应用程序(从最近的应用程序中丢弃)时以及当 Background Service
正在执行用户不可见的操作(例如从服务器下载数据、从 Service
加载数据等时)时,会使用 ContentProvider
。并且 Foreground Service
的可能性较小内存不足时会被系统杀死。
在 Android 中,所有服务都作为守护进程运行,即,无论您的应用程序是在前台还是后台,它们都将执行长时间运行的任务,而无需用户交互。
如果系统内存不足或您的应用程序终止,前台服务不会终止,因此可以保证执行其任务。但是,必须向用户显示通知来证明这一点。
后台服务不需要向用户显示通知,但如果系统内存不足,服务可能会终止,如果您的应用程序终止,服务也会终止。所以不能保证任务一定会执行。前台服务通常比后台服务需要更多的用户权限。