Я использовал следующий код, чтобы сохранить службу живым:Это правильный трюк, чтобы поддерживать сервис даже при низком давлении в памяти?
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
...
keepServiceAlive(this, 2222);
return super.onStartCommand(intent, flags, startId);
}
@SuppressWarnings("deprecation")
public void keepServiceAlive(Service service, int id) {
Notification note = new Notification(0, null, System.currentTimeMillis());
note.flags |= Notification.FLAG_NO_CLEAR;
service.startForeground(id, note);
}
Но иногда служба до сих пор убивают. Не могли бы вы помочь мне подтвердить правильность этого фрагмента кода или предложить лучшее решение?
Это имеет смысл. Но ключевой вопрос здесь: будет ли ваше предложение дать больше возможностей сделать его живым в условиях низкой памяти? – JackWM
'startForeground()', вероятно, лучшее, что вы могли бы сделать. Я полагаю, если вы действительно хотите, чтобы вы могли запускать повторяющийся сигнал тревоги, который запускает намерение запустить службу, поэтому, если он будет убит, он будет перезапущен при следующем сигнале тревоги. Я бы серьезно подумал, что вам действительно нужно это делать, потому что это может быть что-то, что пользователь хочет отключить или не быть таким настойчивым. – Karakuri