OnDestroy()当应用程序转到后台时被调用服务

问题描述:

将应用程序置于后台(按下主页按钮)时服务正在被销毁是否正常? 如果是,我可以通过评论onDestroy()函数来覆盖它,以便服务不被破坏?即做到这一点是一种很好的做法。OnDestroy()当应用程序转到后台时被调用服务

+0

显示您的代码。服务不会在这种情况下被销毁 – 2015-02-23 09:01:39

+0

开始服务为前景http://*.com/questions/24839655/how-to-use-startforeground/24839801#24839801 – 2015-02-23 09:04:01

+0

它的一个巨大的代码,所以这不是一个默认命令当应用程序转到后台时执行? – 2015-02-23 09:05:07

注释掉onDestroy()方法将不会对此行为产生影响; Service类遵循其生命周期described here

要保持Service在后台运行,最常见的方法是使用持久通知。这是设计的; Android不希望服务在后台运行,并且不会向用户指示他们正在执行某些操作并可能会耗尽电池和使用系统资源。

这是通过从服务调用startForeground()并传递一个将显示给用户的通知来完成的。 More on this here

除此之外,另一种方法是将服务中的onStartCommand()的返回值更改为向Android“提示”,以便服务不应该被终止,或者在终止时重新启动;但是,这不能保证您的服务将保持在低内存的情况下运行。 More on this here

这也很好问:你在做什么,需要服务在后台持续运行?通常有更有效的方法来完成这些任务。

+0

感谢您的回复,即时通讯是从网络下载数据的服务中的呼叫,当新数据到达时应通知用户...与通讯应用程序相同 – 2015-02-23 09:11:31

+0

您是否看过使用Google Cloud Messaging(https://developer.android.com/google/gcm/index.html)等服务?这是一种很好的方式,可以在新的数据到达时通知应用程序,而无需保持资源密集型服务的持续运行。强烈建议寻找这样的方法。 – dcarr622 2015-02-23 09:15:42

+0

我会那样做,谢谢你。 – 2015-02-23 09:26:02