Android 服务已重新启动,启动\u不\u
我有一个在后台运行的服务。如果系统在内存不足的情况下终止此服务,则没有问题,但是,我不希望系统重新启动该服务 为此,我从onstart命令返回START\u NOT\u STICKY标志,如下所示:Android 服务已重新启动,启动\u不\u,android,service,Android,Service,我有一个在后台运行的服务。如果系统在内存不足的情况下终止此服务,则没有问题,但是,我不希望系统重新启动该服务 为此,我从onstart命令返回START\u NOT\u STICKY标志,如下所示: public int onStartCommand(Intent intent, int flags, int startId) { // do stuff here return START_NOT_STICKY; } 但是,当我故意打开一堆应
public int onStartCommand(Intent intent, int flags, int startId) {
// do stuff here
return START_NOT_STICKY;
}
但是,当我故意打开一堆应用程序来创建内存不足的情况时,我在日志中看到:
Process com.myapp (pid 3960) has died.
Scheduling restart of crashed service com.myapp/.MyService in 5000ms
Low Memory: No more background processes.
...
Start proc com.myapp for service com.myapp/.MyService: pid=4905 uid=10031 gids={3003, 1015}
所以我的进程在不应该重启的时候被重启了。为什么会这样?根据文档,START_NOT_STICKY不应允许重新启动服务。是否有其他方法阻止服务重新启动?或者,我可以告诉您我的服务何时重新启动
谢谢你看过报纸了吗?开始,做它需要做的,然后停止自己。我的运气更好。重新启动服务可能有多种原因,即使它不是粘性的:
- 如果您的服务已绑定,请与BIND_AUTO_CREATE一起使用
- 如果您对该服务有未决意图
解决此问题的最佳方法是解除服务绑定。您确定没有将启动所述服务的挂起意图吗?如果存在挂起的意图或触发了服务处理的意图,您仍将启动。没有挂起的意图。但是,该服务确实有几个BroadcastReceiver…这会影响什么吗?如果触发了一个注册了BroadcastReceiver的意图(例如,在AndroidManifest.xml中),该服务将被触发来处理它。BroadcastReceiver不是在清单中注册的,而是在服务本身中注册的:registerReceiver(myReceiver,new IntentFilter(MY_ID));我已删除所有广播接收器和侦听器,但仍然存在相同的问题。不幸的是,这对我的情况不起作用。我需要保持服务运行,直到系统决定是时候终止它。