Les variables de mon service / intervivice sont réinitialisées à chaque départ
-
30-10-2019 - |
Question
J'ai déclaré un service, qui agira comme une file d'attente. Par conséquent, j'ai une variable qui indique au service que c'est le premier démarrage et un autre qui stocke une valeur.
Le code ressemble à ceci:
public class TTSQueue extends Service {
private Integer lastvol = 0;
private Boolean isFirstStart = true;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Bundle b = intent.getExtras();
Integer vol = b.getInt(TTS.PARAM_LAST_VOL, 0);
if (vol > lastvol) {
lastvol = vol;
}
if (isFirstStart) {
isFirstStart = false;
startAnotherService();
} else {
waitForAnEventAndThen_startAnotherService();
}
}
D'accord, le problème est que ce service est démarré à partir d'un récepteur. Et chaque fois qu'il est démarré, les deux lastvol
et isFirstStart
sont réinitialisés. J'ai pensé que si le service est déjà créé et commençait avec une intention, cela n'appellerait que onStartCommand()
encore et ne pas réinitialiser tout.
J'ai également essayé uniquement les variables et les définir sur la valeur par défaut dans onCreate()
, mais cela a eu le même effet. J'ai également essayé de remplacer le Service
avec un IntentService
, mais cela n'aide pas non plus, le même problème.
Je voudrais éviter d'utiliser SharedPreferences
, comme je ne pense pas que ce soit nécessairement nécessaire dans ce cas. (Et je ne veux pas gaspiller les cycles d'écriture de l'utilisateur).
Est-ce que je manque quelque chose? Je suppose que ce n'est pas à cause du private
Déclaration, n'est-ce pas?
Pas de solution correcte