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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top