Переменные в моем Сервисе / IntentService сбрасываются при каждом запуске - PullRequest
3 голосов
/ 19 января 2012

Я объявил службу, которая будет действовать как очередь.Поэтому у меня есть переменная, которая сообщает службе, что это первый запуск, а другая хранит значение.

Код выглядит следующим образом:

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

}

Хорошо, проблема в том, что эта службазапускается с получателя.И каждый раз, когда он запускается, оба lastvol и isFirstStart сбрасываются.Я подумал, что если служба уже создана, а затем запущена с намерением, она будет только снова вызывать onStartCommand() и не будет сбрасывать все.

Я также пытался только объявить переменные и установить их в значение по умолчаниюonCreate(), но это имело тот же эффект.Также я попытался заменить Service на IntentService, но это тоже не помогло, та же проблема.

Я бы хотел избежать использования SharedPreferences, так как я не думаю, что это обязательнонужен в этом случае.(И я не хочу тратить впустую циклы записи пользователя).

Я что-то упустил?Я полагаю, это не из-за декларации private, не так ли?

1 Ответ

0 голосов
/ 20 января 2012

Это, безусловно, не имеет ничего общего с тем, что участники являются личными.

Я не уверен, в чем проблема, но я мог представить одного из следующих кандидатов:

  • Услуга прекращается до поступления второго запроса.
  • Receiver порождает новый процесс, потому что он отвечает на "системное намерение".

Вы можете оценить эту догадку, позволяя вашей службе периодически что-то регистрировать.

...