Service

Serviceは、UIを持たないバックグラウンドプロセスであるサービスを扱うためのクラス・・・。

Service | Android Developers

重たい処理を行う時や、アクティビティのライフサイクルとは切り離して継続的な処理を行いたい時に、サービスを作成・開始し、以降はサービスが終了するまで、アクティビティと連携していく・・・。

まずは、サービスを起動・停止してみる・・・。

button1, button2と2つボタンを配置・・・。

button1が押されたら、MainService.classを指定して作ったintent1をstartServiceに指定する・・・。
これでサービスMainServiceが起動する・・・。

button2が押されたら、MainService.classを指定して作ったintent2をstopServiceに指定する・・・。
これでサービスMainServiceが停止する・・・。

MainService.javaは、

Serviceクラスを継承・・・。
サービスが生成された時はonCreate、サービス開始の時はonStartCommand、サービス破棄の時はonDestroyが呼ばれる・・・。(onBindはいずれ説明・・・。)

AndroidManifest.xmlでは、serviceタグでandroid:name=".MainService"を指定する・・・。
(これがないと起動できずエラー・・・。)

f:id:BG1:20160324162644p:plain

button1がサービス開始、button2がサービス停止・・・。
まず、この状態だと、MainActivityのログは、

f:id:BG1:20160324162801p:plain

button1を押して、MainServiceを開始すると、

f:id:BG1:20160324162926p:plain

MainActivity側のログはこうなり、

f:id:BG1:20160324163054p:plain

MainService側のログでは、onCreate、onStartCommandが呼ばれている・・・。

button2を押して、MainServiceを停止すると、

f:id:BG1:20160324163244p:plain

MainActivity側のログはこうなり、

f:id:BG1:20160324163333p:plain

MainService側のログでは、onDestroyが呼ばれている・・・。

Sample/MainActivity.java at master · bg1bgst333/Sample · GitHub
Sample/MainService.java at master · bg1bgst333/Sample · GitHub
Sample/activity_main.xml at master · bg1bgst333/Sample · GitHub
Sample/strings.xml at master · bg1bgst333/Sample · GitHub
Sample/AndroidManifest.xml at master · bg1bgst333/Sample · GitHub