0

私のApplicationサブクラスでは、 への静的参照を保存してContext、コードの残りの部分でコンテキストを渡す必要がないようにします。MyApplication.getAppContext()アプリケーションが必要なときはいつでも使用しますContext

public class MyApplication extends Application {
    private static Context context;

    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
    }

    public static Context getAppContext() {
        return context;
    }
}

これは安全ですか?MyApplication.getAppContext()返される可能性のあるシナリオはありますnullか?

4

2 に答える 2

2

次のステートメントを念頭に置いて使用してください。安全です。

onCreate() アプリケーションの起動時、アクティビティ、サービス、またはレシーバー オブジェクト (コンテンツ プロバイダーを除く) が作成される前に呼び出されます。

http://developer.android.com/reference/android/app/Application.html

また、次の投稿も確認してください。

どこでもアプリケーションコンテキストを使用していますか?

于 2013-08-11T12:01:17.680 に答える
2

静的初期化子は、オブジェクト インスタンスが作成される前に、クラスの読み込み時にメソッドを呼び出すことができます。また、クラス コンストラクターは onCreate メソッドが呼び出される前にメソッドを呼び出す可能性があるため、そうです、メソッドは null を返す可能性があります。

于 2013-08-11T11:22:27.057 に答える