我有一个前台服务,我在其中注册位置更新,并对电池意图Intent.ACTION_BATTERY_CHANGED
和LocalBroadcast
进行意图过滤。所有这些我都在我的服务的onDestroy
中删除,因为这项服务已经死了。
我也已将onStartCommand
中的返回整数从START_STICKY
更改为START_NOT_STICKY
,但这没有效果。
我在启动和销毁此服务以及我的主要活动时进行记录,似乎此服务只是自行启动而没有任何活动。
问题是它是一个前台服务,所以通知随之而来。这意味着当它再次随机启动时,用户会看到通知,我不希望服务自动运行。
所以回顾一下
- 这是一个受约束的前台服务
- 我在START_NOT_STICKY
中返回onStartCommand
- 当我不再需要它并关闭应用程序时,我解除绑定,调用stopService并调用服务的onDestroy,这是我们取消注册所有接收器的地方。
- 此后服务随机启动。
答案 0 :(得分:3)
由于您使用前台服务,因此应调用stopForeground方法 “警告:您为startForeground()提供的整数ID不能为0.”
只有两种启动服务的方法,无论是绑定还是从上下文启动它,都必须确保在代码中没有这样做。
也许您应该检查服务生命周期: http://developer.android.com/images/service_lifecycle.png