У меня есть служба android, которая предназначена всегда для работы в фоновом режиме, аналогично тому, что делает MessageService WhatsApp. Когда приложение запускается, оно гарантирует, что служба действительно запущена. Позже одна из активистов связывается с сервисом, чтобы использовать некоторые из его методов в дополнение к тому, что уже делает служба, а когда активность уничтожается - она отталкивается от службы. Пока все хорошо, похоже, это сработало.Служба Android перезагружается после закрытия приложения
Но когда я закрываю свое приложение (как правило, не останавливается), служба, похоже, перезагружается через минуту или около того, а затем продолжает работать нормально. Но когда я смотрю на службу WhatsApp, я вижу, что этого не происходит - после закрытия приложения служба продолжает нормально работать и не перезапускается сама.
Любые намеки на то, что вызывает это и как его решить?
EDIT код, в соответствии с просьбой:
Соответствующая часть службы:
public static boolean isRunning = false;
...
...
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
if (!isRunning) {
isRunning = true;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
connect(intent.getIntExtra(Constants.ID, -1),
intent.getStringExtra(Constants.PASSWORD));
}
});
thread.start();
}
return START_REDELIVER_INTENT;
......
}
Запуск службы, когда приложение начинает
if (!ChatService.isRunning) {
Intent chatService = new Intent(this, ChatService.class);
chatService.putExtra(Constants.ID, LocalManager.getID());
chatService.putExtra(Constants.PASSWORD, LocalManager.getPassword());
startService(chatService);
}
Привязка к службе в одна из видов деятельности
void bindService() {
bindService(new Intent(Chats.this, ChatService.class), mConnection,
Context.BIND_AUTO_CREATE);
mIsBound = true;
}
ВТОРОЙ EDIT Оказывается, это не имеет ничего общего с привязкой к службе, то же самое происходит, даже когда я не связываться с сервисом (сервис перезапускается, когда приложение закрывается). Выполнение службы по отдельному процессу также не помогло решить эту проблему.
Покажите нам свой код, сервис, деятельность, с которой вы начинаете работать. – rom4ek
@ Добавлены блоки кода Romadja. – Eran
Итак, какова ваша проблема сейчас? Если ваш возвращающийся START_REDELIVER_INTENT означает, что вы готовы к уничтожению службы и можете восстановить его, это не должно вызывать никаких проблем. – rom4ek