4

我有一个前台服务,我在其中注册位置更新,以及电池意图的意图过滤器Intent.ACTION_BATTERY_CHANGED,以及一个LocalBroadcast. onDestroy一旦该服务死亡,所有这些我都会在我的服务中删除。

我还更改了onStartCommandfrom START_STICKYto中的返回整数,START_NOT_STICKY但这没有效果。

我记录了该服务何时启动和销毁以及我的主要活动,似乎该服务只是自行启动而没有任何活动。

问题是它是一个前台服务,所以它会附带一个通知。这意味着当它再次随机启动时,用户会看到通知,我不希望服务自行运行。

所以回顾一下。
- 这是一个绑定的前台服务。
- 我返回START_NOT_STICKY-onStartCommand
当我不再需要它并关闭应用程序时,我解除绑定,调用 stopService 并调用服务的 onDestroy,这是我们取消注册所有接收器的地方。- 在此之后随机启动该服务。

4

1 回答 1

3

由于您使用前台服务,您应该调用 stopForeground 方法“注意:您给 startForeground() 的整数 ID 不能为 0。”

启动服务只有两种方法,绑定或从上下文启动它,您必须确保您没有在代码中执行此操作。

也许您应该检查服务生命周期:http: //developer.android.com/images/service_lifecycle.png

于 2015-02-28T17:11:16.880 回答