質問

私は、キューとして機能するサービスを宣言しました。したがって、サービスに最初のスタートであることを伝える変数と、値を保存する別の変数があります。

コードは次のようになります:

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

}

さて、問題は、このサービスがレシーバーから開始されることです。そして、それが始まるたびに、両方 lastvolisFirstStart リセットされています。サービスが既に作成されていて、意図的に開始された場合、電話だけに電話すると思いました onStartCommand() 繰り返しますが、すべてをリセットしません。

また、変数を宣言してデフォルト値に設定するだけで試してみました onCreate(), 、しかし、それは同じ効果がありました。また、交換してみました ServiceIntentService, 、しかし、それも同じ問題ではありません。

使用を避けたいです SharedPreferences, 、この場合は必ずしも必要ではないと思います。 (そして、ユーザーの書き込みサイクルを無駄にしたくありません)。

私は何かが足りませんか?のためではないと思います private 宣言、それですか?

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top