停止前台服务重启自己

时间:2015-02-20 15:28:32

标签: android android-service android-service-binding

我有一个前台服务,我在其中注册位置更新,并对电池意图Intent.ACTION_BATTERY_CHANGEDLocalBroadcast进行意图过滤。所有这些我都在我的服务的onDestroy中删除,因为这项服务已经死了。

我也已将onStartCommand中的返回整数从START_STICKY更改为START_NOT_STICKY,但这没有效果。

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

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

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

1 个答案:

答案 0 :(得分:3)

由于您使用前台服务,因此应调用stopForeground方法 “警告:您为startForeground()提供的整数ID不能为0.”

只有两种启动服务的方法,无论是绑定还是从上下文启动它,都必须确保在代码中没有这样做。

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