Pregunta

Declaré un servicio, que actuará como una cola. Por lo tanto, tengo una variable que le dice al servicio que es el primer inicio y otro que almacena un valor.

El código se ve así:

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();
    }

}

De acuerdo, el problema es que este servicio se inicia desde un receptor. Y cada vez que se inicia, ambos lastvol y isFirstStart son restablecidos. Pensé, si el servicio ya se creó y luego comenzó con una intención, solo llamaría onStartCommand() de nuevo y no reiniciar todo.

También intenté declarar solo las variables y configurarlas en el valor predeterminado en onCreate(), pero eso tuvo el mismo efecto. También intenté reemplazar el Service con un IntentService, pero eso tampoco ayuda, el mismo problema.

Me gustaría evitar usar SharedPreferences, ya que no creo que sea necesariamente necesario en este caso. (Y no quiero desperdiciar los ciclos de escritura del usuario).

¿Me estoy perdiendo de algo? Supongo que no es por el private Declaración, ¿verdad?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top