Le variabili nel mio servizio/intenstervice vengono ripristinate ad ogni avvio
-
30-10-2019 - |
Domanda
Ho dichiarato un servizio, che fungerà da fila. Pertanto ho una variabile che dice al servizio che è il primo inizio e un altro che memorizza un valore.
Il codice sembra così:
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();
}
}
Ok, il problema è che questo servizio è iniziato da un ricevitore. E ogni volta che viene avviato, entrambi lastvol
e isFirstStart
sono ripristinati. Ho pensato, se il servizio fosse già creato e poi avviato con un intento, chiamerebbe solo onStartCommand()
Ancora una volta e non ripristinare tutto.
Ho anche provato a dichiarare solo le variabili e metterle sul valore predefinito in onCreate()
, ma questo ha avuto lo stesso effetto. Inoltre ho provato a sostituire il Service
con un IntentService
, Ma non aiuta neanche questo, stesso problema.
Vorrei evitare di usare SharedPreferences
, poiché non penso che sia necessariamente necessario in questo caso. (E non voglio sprecare i cicli di scrittura dell'utente).
Mi sto perdendo qualcosa? Immagino che non sia a causa del private
Dichiarazione, vero?
Nessuna soluzione corretta