2017-12-20 17 views
-1

私はサービスを開始および停止するアクティビティを持っています。それはシンプルなようですが、私がサービスを開始し、それを停止する場合は、それは大丈夫です。
サービスを再起動すると、サービスのインスタンスが2つ見つかりました。
なぜですか?私は「initButton」サービスをクリックした場合複数のサービスインスタンスの防止

public class Test extends AppCompatActivity implements View.OnClickListener { 
     @Override 
public void onClick(View v) { 
    switch (v.getId()) { 

     case R.id.InitButton: 
     { 
      startMonitor(); 
     } 
     break; 
     case R.id.EndButton: 
     { 
      stopMonitor(); 
     } 
     break; 
     case R.id.SendData: 
     { 
      sendData(); 
     } 
     break; 
     default: 
      break; 
    } 
} 

    ... 

    private void startMonitor(){ 

    Intent intent = new Intent(this, MyService.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 


    startService(intent); 

} 

private void stopMonitor(){ 

    Intent intent = new Intent(this, MyService.class); 
    stopService(intent); 

} 


を開始それから私は「EndButton」をクリックして、サービスが
を終了それから私は再び「initButton」をクリックして、私はポストを示唆したが、私の見る2つのサービス

を開始アクティビティでサービスを停止したときにサービスが実行されていない

+0

[サービスがAndroidで実行されているかどうかを確認する方法](https:///stackoverflow.com/questions/600207/how-to-check-if-a-service-is-running-on-android) – Zoe

+0

レコードの場合は、既存のが走っています。特定のタイプのサービスの量に制限はありません(ハードウェアの制限を除いて、明らかに) – Zoe

+0

サービスを停止する前にサービスを実行しているのはなぜですか? – mrpep

答えて

0

「4人のギャング」について読んだデベロッパーに強くお勧めします。あなたのケースでは、singletonデザインは、一度にクラスのインスタンスが1つしか実行されないようにします。デフラグによって、開始されたサービスは、開始された回数に関係なく、1つのインスタンスしか持たないはずです。このフラグIntent.FLAG_ACTIVITY_NEW_TASKは、すでに実行中であっても、別のタスクを開始します。サービスをシングルトンにすると、何かを傷つけることはありません(1つのインスタンスが必要な場合)

関連する問題