AndroidのServiceとは?概要を解説

2019年5月21日

AndroidのServiceとは?

Serviceはバックグラウンドで何か処理を行いたい時に使用します。

なぜバックグラウンドで処理を行う必要があるかというと、AndroidはUIスレッドをメインとしたシングルスレッド設計だからです。

ActivityやFragmentがフォアグラウンドにある状態だとUIスレッドがユーザの画面操作のために動くようになっているので、
フォアグラウンドにて他スレッドで処理を行おうとする際にスレッドの競合が発生してエラーになります。

これを防ぐためにバックグラウンドで動作するServiceという仕組みを使用します。

 

 

Serviceの用途

用途としては下記のようなものがあげられます。

  • ユーザがボタンを押下後、サーバからデータをダウンロードする
  • アプリがバックグランドにいるときに音声を再生する

 

AndroidのServiceの形式

Serviceには大きく2つの形式があります。

startService

startService()で処理を開始し、自ら停止するまで処理を続けます。

呼び出し元に結果を返すことはなく、処理の実行のみを行います。

Android Oreo(8.0)からstartForegroundService()が導入されたため、

Oreo対応のアプリを開発する場合は、使い分ける必要があります。

 

bindService

bindService()で処理を開始します。

バインドしたサービスから結果を取得したり、要求を送信する等の制御が可能です。

呼び出し元のActivityやFragmentが終了されると一緒に終了します。