Activityインスタンスへの逆参照がある場合、静的変数は不適切です。これは、アプリの使用のライフサイクルの中でアクティビティが数回再現されたためです(たとえば、スマートフォンを切り替えたとき)。
たとえば、次のコードは安全です。
private static Long mMyLong;
しかし、これは安全ではありません:
private static Context mContext;
時々注意してください、いくつかの明白でない後方参照があります。
この種の問題を回避するには、静的HashMapをアプリケーションクラスに保存する必要があります(アプリケーションクラスの作成に関する他の投稿https://stackoverflow.com/a/13994622/1789730をここで見つけることができます)。したがって、アクティビティのライフサイクルに関係なく、ハッシュマップは1回作成されます。その上、あなたはパフォーマンスを向上させるでしょう。参照を保持しないようにするために、YourActivity.onDestroy()でハッシュマップとそのコンテンツをnullに設定し、YourActivity.onCreate()で再作成することができます。
ハッシュマップが死亡の参照を保持している場合は、次の経験をシュールにすることができます。上記のように、ハッシュマップをアプリケーションクラスに配置します。スマートフォンをポートレート/ランドスケープに切り替えて、アクティビティを再現します。したがって、ハッシュマップオブジェクトを使用してアクティビティがクラッシュした場合、それはアクティビティへの参照を保持することを意味します。