J'utilise le code suivant pour maintenir en vie un service:Est-ce la bonne astuce pour maintenir un service en vie même sous une faible pression de la mémoire?
@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);
}
Mais parfois, le service était encore tué. Pourriez-vous m'aider à confirmer l'exactitude de ce code ou préférez-vous une meilleure solution?
Cela a du sens. Mais la question clé ici est la suivante: votre suggestion donnera-t-elle plus de possibilités de la rendre vivante en cas de mémoire insuffisante? – JackWM
'startForeground()' est probablement le meilleur que vous puissiez faire. Je suppose que si vous le vouliez vraiment, vous pourriez lancer une alarme répétée qui déclenche l'intention de démarrer le service, donc si elle est détruite, elle sera redémarrée à l'alarme suivante. Je penserais sérieusement à ce que vous avez vraiment besoin de faire, parce que c'est quelque chose que l'utilisateur veut désactiver ou ne pas être si persistante. – Karakuri