96479


表題のとおり、複数のActivityでgetSystemServiceを使用し、同じシステムサービスのインスタンスを取得したいです。  
Android
Developersサイトの[getSystemService](https://developer.android.com/reference/android/content/Context#getSystemService\(java.lang.String\))を確認すると以下のような記載があります。

> Note: System services obtained via this API may be closely associated with
> the Context in which they are obtained from. In general, do not share the
> service objects between various different contexts (Activities,
> Applications, Services, Providers, etc.)

上記の記載について意味を理解できておらず、現状は以下のどちらかの方法で実装を行えば良いのではと思っています。

  * シングルトンクラスを作成し、その中でアプリケーションのContextを使用してシステムサービスのインスタンスを取得し、各Activityで使用する
  * ActivityごとにActivityのコンテキストを使用してシステムサービスのインスタンスを取得し使用する

システムサービスの正しい使用方法をご存知でしたらご教示頂けますと幸いです。


CC BY-SA 4.0
2022-12-05T05:27:23.857
92586
2023-10-12T06:41:57.470
2022-12-05T07:02:28.810
55784
55784
question
android
複数のActivityでgetSystemServiceによりシステムサービスを利用するためのインスタンスを取得する方法


static化とか…？  
無理くり動的にしてしまうとかで呼び出せば良いかなとか。


CC BY-SA 4.0
2023-09-03T01:07:29.650
96107
2023-09-03T01:07:29.650
59651
92586
answer


複数のActivityでシステムサービスを利用するにはアプリケーションコンテキストを使用してgetSystemServiceからサービスを取得することが望ましいようです。

複数のActivityでシステムサービスのインスタンスを取得する場合、Activityのコンテキストを使用するとコンテキストごとにシステムサービスインスタンスのキャッシュを生成してしまうようで、動作に支障をきたすことがあります。

そのため、アプリケーションコンテキストを使用することで窓口を1本化する必要があると理解しました。


CC BY-SA 4.0
2023-10-12T06:41:57.470
96479
2023-10-12T06:41:57.470
55784
92586
answer