Androidで静的変数を使用することは、特にアクティビティを参照する場合、非常に危険であることを私は知っています。ただし、Applicationを拡張するクラス(このクラスを「App」と呼びましょう)がある場合、このクラスのインスタンスを参照しても安全ですか?
もしそうなら、他のクラスがアプリケーションコンテキストへの何らかの参照を持つことも安全ですか?つまり、任意の種類のクラスのアプリケーションコンテキストへの参照がある場合、メモリリークが発生する可能性がありますか?
目的は、どのスコープにいても、常にアプリケーションコンテキストへの参照を取得できるようにすることです。システムがアプリケーションを閉じると、次にアプリケーションが再起動するまで静的変数も失われ、静的変数が再び初期化されるため、安全だと思います。
また、それはそれほど重要ではありませんが、複数のプロセスを使用する場合、各プロセスでAppクラスへのまったく異なる参照を取得しますか?
コードの例として、私が考えていることは次のとおりです。
public class App extends Application
{
private static Context _appContext;
@Override
public void onCreate()
{
super.onCreate();
_appContext = this;
}
public static Context getAppContext()
{
return _appContext;
}
}