哪一个是以正常方式(startService())或使用startForeground()更好地启动服务

时间:2016-10-06 08:18:47

标签: android

我正在我的应用程序中启动服务。目前我正在以一种简单的方式开始我的活动服务:

Intent i=new Intent(this,WindowService.class);
startService(i);

它在大多数设备中运行良好,但在某些设备(如lenovo和某些设备)中,当我从最近的任务中移除我的应用程序时,服务也会被活动杀死。所以我发现startForeground()方法将解决这个问题问题。即使从最近的任务中删除了应用程序,startForeground()方法也允许我的服务运行。

2 个答案:

答案 0 :(得分:0)

是的,startForeground()启动了一个前瞻性的服务,其中包含通知,告知用户该服务仍在运行。这是因为前景服务消耗了更多的资源,并且受到与后台服务不同的调度限制(即,它不会被快速杀死)。

常用于播放音乐,下载文件等。

答案 1 :(得分:0)

来自Service Docs

  

启动的服务可以使用startForeground(int,Notification)API   将服务置于系统考虑的前台状态   它是用户积极了解而不是a   内存不足时杀人的候选人。 (理论上还是如此   可能会在极端记忆压力下杀死该服务   从当前的前台应用程序,但在实践中这应该   不要担心。)

所以从文档来看,系统似乎不会终止前台服务