【发布时间】:2012-02-02 07:09:04
【问题描述】:
我正在尝试让我的Service 在前台运行。我尝试使用this example(请查看“在前台运行服务”部分),但startForeground() 实际上并没有显示我的通知。并且不会抛出任何异常。为了让它显示出来,我需要使用NotificationManager 就像here 解释的那样。使用NotificationManager,我的通知有效,但我不确定我的Service 在对startForeground() 进行“无声”调用后是否处于前台。
有什么问题?
编辑:我刚刚测试了this sample project,应该证明startForeground(),但它不起作用!我使用 API v7.0,我在模拟器和真实设备(SE Xperia Neo)上都对其进行了测试。通知未出现。
EDIT2:如果我尝试调用 setForeground(),则会收到警告 setForeground: ignoring old API call。
我也尝试使用startForegroundCompat() 描述here,但效果完全一样。我使用ActivityManager.RunningServiceInfo 检查我的服务是否在前台,如here 所述,我发现我的服务不是前台。
【问题讨论】:
-
由于您选择不提供源代码,因此很难直接帮助您。 Here is a sample project 成功使用
startForeground()。 -
我没有提供源代码,因为我的代码与我提供的示例完全相同:goo.gl/xXIvc。感谢您提供示例项目。
-
我测试了这个示例项目,它不起作用!我使用 API v7.0,我在模拟器和真实设备(SE Xperia Neo)上都对其进行了测试。通知未出现。
-
示例项目运行良好——我刚刚在 Nexus One、Galaxy Nexus、Nexus S、HTC Desire S 和“API v7.0”模拟器上重新测试了它。要启动服务并显示
Notification,请按“启动播放器”按钮。 -
@CommonsWare,感谢您的宝贵时间。而且,当然,我按下了“启动播放器”按钮 =)。很奇怪,但它不适用于 SE Xperia Neo 和 API v7.0 模拟器。明天我将在某种 Acer 上对其进行测试,但我认为问题出在不同的地方,但我完全不知道可能出了什么问题。
标签: android service foreground