Android

[Android] Androidでのシングルトンクラス実装の注意点

Android Studioで、Contextオブジェクトをフィールド変数として持つクラスをシングルトンクラスとして実装すると、メモリリークの可能性があるという警告が出ます。

Androidはメモリが圧迫されてくるとバックで動いているActivityやServiceを落としていきますが、そうなったときにシングルトンクラスがいつまでもContextオブジェクトを参照し続けて、リークの恐れがあるというもの。おそらく。

シングルトンクラスでContextオブジェクトをフィールド変数として管理したいのであれば、ActivityやServiceが作られる度にContextを更新するような作りにした方が良さそうです。
 

あと、通常のクラスと同様で、シングルトンクラスが破棄されて再度インスタンスが作られた場合も、フィールド変数は全て初期値にリセットされてしまいます。
例えば、Contextオブジェクトの場合は「null」になります。

Contextオブジェクトに限らず、変数がリセットされたことを知らずに参照すると、意図しない動きをしてしまうので注意が必要です。
 
 

-Android
-