2016-03-29 11 views
1

私はgithubのprojectクラスの1で見つかった:静的クラスAppContextを使用するのは良い考えですか?

public class AppContext { 

    private static Context sContext; 
    private static Application sApplication; 

    public static Application getApplication() { 
     if (sApplication == null) { 
      throw new IllegalStateException("AppContext.setApplication was not called in Application.onCreate() method. " + 
        "Please inherit your application from the com.blandware.android.atleap.BaseApplication class."); 
     } 

     return sApplication; 
    } 

    public static void setApplication(Application application) { 
     sApplication = application; 
    } 

    public static Context getContext() { 
     if (sContext == null) { 
      throw new IllegalStateException("AppContext.setContext was not called in Application.onCreate() method. " + 
        "Please inherit your application from the com.blandware.android.atleap.BaseApplication class."); 
     } 

     return sContext; 
    } 


    public static void setContext(Context context) { 
     sContext = context; 
    } 
} 

それが作成縫い目、静的関数などに多くのパスコンテキストを必要とするしかし、私はメモリリーク心配はありません。 AppContextで作成できますか?アクティビティのコンテキストやビューを表示するときに、私は使用コンテキストを使用しますか?

答えて

3

Applicationオブジェクトはリークできません。すべてのアプリケーションに常に正確に1つのApplicationオブジェクトがあります。作者がこのクラスを使っているだけで、別のContextが利用できない場所で簡単にアクセスでき、getApplicationContext()を呼び出してApplicationオブジェクトを取得できるようです。

コンテキストは、アクティビティまたはサービスである可能性があり、実際にはそれらの存続期間を超えて格納すべきではありません。漏れがあるかどうかを調べるには、ここに格納されているContextオブジェクトを正確に調べなければなりません。

+0

あなたは「漏れがあるかどうかを知るために、ここにどのコンテキストオブジェクトが格納されているかを正確に見なければならないでしょう。 – Tany

+0

私は、ここに問題があるとすれば、ここでコードを知ることは不可能だと言っています。予想される寿命を超えてオブジェクトを漏らす潜在的な問題があるかどうかを知るために、どのように使用されているかを見なければなりません。 –

関連する問題