2016-11-29 11 views
0

私は今のところうまく動作しているフォアグラウンドサービスを実装しました。このサービスは、動作する共有環境設定をロードしています。 ユーザーがこれらのパラメータを変更して適用すると、環境設定から新しい変更をロードできるようにサービスを再起動する必要があります。アンドロイドのサービスを再開するには

は私のサービスが開始され

/私が使用していることを再起動するように、スイッチから停止 :

@Override 
public void onSettingsInteraction() { 
    if(pService.isRunning()){ 
     pServiceSwitch.performClick(); 
     pServiceSwitch.performClick(); 
    } 
} 
コールバックが設定フラグメントの相互作用のために待機している

。今私の質問は、私は2つの呼び出しの間に小さな遅延を設定するか、そのままの状態にしておくべきですか?私は2つの呼び出しが速すぎると、サービスが再び開始せずに停止することが恐れている。

+1

サービスを停止して起動するのではなく、サービスがパラメータをリロードする必要があることを示す「余分」を含む 'Intent'を含む' startService() 'を呼び出してみてください。 'Service'は' onStartCommand() 'の' Intent'を取得し、それ自身を再初期化することができます。 –

+0

良いアイデア!私はそれを解決し、今それをテストして、私はスイッチの状態を別に変更し、インテントを使ってサービスを停止/開始します。私は 'onCreate()'で私の初期化の大部分を持っていますが、 'onStartCommand()'でも行うことができます。私はそれを受け入れることができるので、あなたの答えを投稿してください、ありがとう。 – Altaiir

答えて

1

オルタナティブ:代わりに停止し、あなたのServiceを開始するのは、なぜあなただ​​けのパラメータをリロードする必要がありServiceを示し、その「余分」を含むIntentstartService()を呼び出すことはありません。 ServiceIntentonStartCommand()にしてから、それ自体を再初期化することができます。

関連する問題