サービスを宣言しました。これはキューとして機能します。したがって、私は最初にサービスを開始する変数と値を格納する変数を持っています。サービス/ IntentService内の変数は、開始時にリセットされます。
コードは次のようになります。
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
宣言のためではないと思いますか?
Marc from Duetchland!私は考えていないが、私はそれをupvoted。 – wwwroth