2011-04-13 44 views

回答

8

setForeground()已弃用,我认为根本无法在较新版本的Android上使用。您需要更新的startForeground()

引用自己从one of my books

然而,一些服务会被用户错过 如果它们神秘消失 。例如,默认音乐 播放器应用程序随附的 Android使用的服务为实际的 音乐播放。这样,用户可以 听音乐,同时继续到 将其手机用于其他目的。 该服务仅在用户 进入并按下 中的停止按钮时停止音乐播放器活动。如果这个 服务意外关闭了 ,那么用户可能会怀疑 出了什么问题。

像这样的服务可以声明 本身作为 “前景”的一部分。这将导致他们的 优先级上升,并使他们更少可能被内存不足冲出。 权衡是服务必须 保持Notification,所以用户 知道这项服务是要求 前景的一部分。而且,理想情况下, Notification提供了一个简单的 路径返回到某些活动,其中 用户可以停止该服务。

要做到这一点,在你的 服务(或任何其他地方的 服务的生命它将使意义), 呼叫startForeground()onCreate()。这需要 Notification和本地唯一 整数,就像notify()方法 在NotificationManager。它会导致 Notification出现并将 服务移动到前台优先级。 稍后,您可以拨打 stopForeground()恢复正常 优先。

+0

是的,[Service.setForeground()现在不推荐使用,2.0中不做任何事情](http://android-developers.blogspot.com/2010/02/service-api-changes-starting-with.html )。 – kreker 2012-03-01 19:31:30

相关问题