キューとして機能するサービスを宣言しました。したがって、最初の開始であることをサービスに伝える変数と、値を格納する別の変数があります。
コードは次のようになります。
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
宣言のせいじゃないんでしょ?