通常、Androidサービスを作成するときにonCreate
メソッドを実装しますが、最後のプロジェクトでは機能しません。 onStartCommand
を実装しようとしましたが、これはうまくいくようです。
問題は、サービスを実装する必要があるとき、どのメソッドが必要かということです。どのメソッドを実装する必要がありますか? onCreate
、onStartCommand
、またはその両方?そして、それぞれの役割は何ですか?
onCreate()
は、Service
オブジェクトがインスタンス化されると呼び出されます(つまり、サービスが作成済みの場合)。このメソッドでは、一度だけ行う必要のあること(つまり、いくつかの変数を初期化するなど)を行う必要があります。 onCreate()
は一度しか呼び出されませんインスタンス化されたオブジェクトごと。
実際に何かを初期化したい/必要な場合にのみ、onCreate()
を実装する必要があります一度だけ。
onStartCommand()
が呼び出される毎回クライアントはstartService(Intent intent)
を使用してサービスを開始します。これは、onStartCommand()
が複数回呼び出されることを意味します。このメソッドで必要なことを行う必要があります毎回クライアントがサービスから何かを要求します。これは、サービスの機能と、クライアントとの通信方法(およびその逆)に大きく依存します。
onStartCommand()
を実装しない場合、クライアントがonStartCommand()
に渡すIntent
から情報を取得できず、サービスが有用な機能を実行できない可能性があります。作業。
サービスはアクティビティと同じように振る舞いますサービスで一度
associate
にしたいことは何でもonCreate
に初期化のようになります
そして、service
がstartServiceを使用して呼び出されるたびに。 onStartCommand
が呼び出されます。実行するアクションを渡すことができます。音楽プレーヤーのように、アクションを使用して再生、一時停止、停止することができます
そして、onStartCommand
でアクションを送信して受信することにより、operation in service
を実行します
onCreate
は、コンストラクターのように機能します。
簡単に編集
onCreate()
は、Service
を初めて起動するときにのみ呼び出しますが、onStartCommand()
は、startService
を再度呼び出すたびに呼び出します。音楽の再生、停止、一時停止などのアクションを設定できます。
public void onStartCommand()
{
if(intent.getAction.equals("any.play")
{
//play song
}
else if(intent.getAction.equals("any.stop")
{}
}