最終更新:2016-01-19 (火) 17:51:42 (2991d)
Android/サービス/ライフサイクル
http://www.techdoctranslator.com/android/guide/services
形態
startService
- Context.startService/Context.stopService
- stopself
- サービスがいちど開始されると、それを開始したコンポーネントがたとえ破棄されたとしても、無期限にバックグラウンドで実行することができます。
- 通常は、開始されたサービスは単一の動作であり、呼び出し元に結果を戻すことはありません。
- 例えば、サービスでネットワークを介してファイルのアップロードやダウンロードを行うことがあります。
- 作業が完了したらサービスは自身を停止させる必要があります。
bindService
- バインドされたサービスは、コンポーネントとサービスとの双方向のやり取り、リクエストの送信、結果の取得、さらにそれらをプロセス間通信 ( IPC ) を使ってプロセスを通して行うことができるクライアントサーバ型のインターフェイスを提供します。
- バインドされたサービスは別のアプリケーションコンポーネントがそれにバインドしている間のみ実行されます。
- 複数のコンポーネントがいちどにサービスにバインドすることができますが、それらのすべてがアンバインドされるとサービスは破棄されます。
両方
- サービスは開始されるのと ( 無期限に実行させるために ) と同様にバインドされることも許可し、両方の方式で動作させることができます。これは単にふたつのコールバックメソッドを実装するかどうかの話で、onStartCommand() はコンポーネントがサービスを開始することを許可し、onBind() はバインドすることを許可します。
無期限に実行
- Context.startService/Context.stopService
- Service全般として実行中はServiceからActivityへIntentの発行が可能
- サービス起動後はActivityからServiceを制御する経路がない
- Serviceの生存期間はActivityに依存しない。明示的にstopServiceが呼ばれるまで動き続ける。
呼び出し順
Android/バインドされたサービス
- Context.bindService/Context.unbindService?
- バインド(bind)という仕組みを使い、ActvitiyとServiceでコネクションを確立する(接続する)
- バインドを使うことでActivityからServiceを制御できる
- Serviceの生存期間はコネクションに依存。コネクションが切断されるとServiceは終了する。