ボタンをクリックすると、メソッドstartService(new Intent(currentActivity.this,MyService.class))
を使用してサービスを開始しますが、サービスが実行中の場合、このメソッドを呼び出して既に実行中のサービスを実行しないようにします。両方インテントサービスとサービスが同じプロジェクトにあり、両方に同じ条件を適用したい。
サービスは1回しか実行されないため、startService(Intent)
を複数回呼び出すことができます。
サービスでonStartCommand()
を受け取ります。それを覚えておいてください。
ソース:Context.startService()
への複数の呼び出しはネストされないことに注意してください(ただし、それらは複数の対応するonStartCommand()
への呼び出しになります)。 Context.stopService()
またはstopSelf()
が呼び出されると;ただし、サービスはstopSelf(int)
メソッドを使用して、開始されたインテントが処理されるまでサービスが停止されないようにすることができます。
で: http://developer.Android.com/reference/Android/app/Service.html トピック:サービスライフサイクル
startService()
を使用します。サービスの開始はonStartCommand()
を呼び出します。サービスがまだ開始されていない場合は、onCreate()
を呼び出します。変数を初期化するか、onCreate()
でスレッドを開始します。
サービスをバインドします。通話を開始するとき:
Intent bindIntent = new Intent(this,ServiceTask.class);
startService(bindIntent);
bindService(bindIntent,mConnection,0);
次に、サービスが機能しているかどうかを確認するには、次のような方法を使用します。
public static boolean isServiceRunning(String serviceClassName){
final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);
for (RunningServiceInfo runningServiceInfo : services) {
if (runningServiceInfo.service.getClassName().equals(serviceClassName)){
return true;
}
}
return false;
}
アクティビティからサービスを開始するたびに、AndroidシステムはサービスのonStartCommand()メソッドを呼び出します。サービスがまだ実行されていない場合、システムは最初にonCreate()を呼び出し、次にonStartCommand( )。
つまり、Androidサービスの開始はライフサイクルで1回だけであり、停止するまで実行し続けます。他のクライアントが再び開始する場合は、onStartCommand()メソッドのみが常に呼び出されます。