2

サービスを宣言しました。これはキューとして機能します。したがって、私は最初にサービスを開始する変数と値を格納する変数を持っています。サービス/ 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(); 
    } 

} 

さて、問題は、このサービスは、受信機から開始されます。そして、起動するたびにlastvolisFirstStartがリセットされます。サービスが既に作成されてからインテントで開始された場合は、onStartCommand()のみを呼び出してすべてをリセットしないと考えました。

また、変数を宣言して、デフォルト値のonCreate()に設定してみましたが、同じ効果がありました。 また、私はServiceIntentServiceに置き換えようとしましたが、それは同じ問題を引き起こします。

SharedPreferencesは、この場合必ずしも必要ではないと私は考えていません。 (そして私はユーザーの書き込みサイクルを無駄にしたくない)。

何か不足していますか?私はそれがprivate宣言のためではないと思いますか?

+1

Marc from Duetchland!私は考えていないが、私はそれをupvoted。 – wwwroth

答えて

0

これは、メンバーがプライベートであることとは関係ありません。

私が問題だかわからないんだけど、私は、これらの候補の一つ想像:2番目の要求が到着する前に

  • サービスが終了します。
  • Receiverは、「システムインテント」に応答するため、新しいプロセスを生成します。

サービスのログを定期的に送信することで、この推測を評価できます。

+0

ありがとう、本当にサービスが終了した理由はたくさんあります。奇妙な。しかし、今働いています、ありがとう! – Force

関連する問題