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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top