Activity – Service間の値受け渡しはIntentを通して行うのが通常ですが、staticなフィールドを利用して渡したい場合も有るかと思います.

そのような場合の注意点を記載します.

Activity で立ち上げたプロセス内で、staticなフィールドに値を設定しても値が受け渡すには、AndroidManifest.xmlのServiceの定義でandroid:process の記述をせず、デフォルトにする必要があります.

具体的には、<service>タグや<receiver>タグの中からandroid:processの記載を消すことになります.

 

processに設定できる値は以下の3パターンがあります

  • android:process の記述無し

 サービスはアプリケーションに割り当てられたプロセス上で、他のActivityと共に実行される。

  • android:process = “:testservice” とコロン”:”で始まる名前を指定した場合

サービスはアプリケーションのプロセスとは別の、新たなプライベートなプロセス上で実行される

  • android:process = “servicename” と英小文字もしくはピリオドで始まる名前を指定した場合

サービスはアプリケーションのプロセスとは別の、新たなグローバルなプロセス上で実行される

 

別プロセスで実行するようにした場合はアプリケーションのプロセスを終了してもサービスのプロセスが常駐して実行されます.

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *