我的自定义Application对象是否在执行任何其他代码之前实例化?

时间:2013-08-11 11:16:33

标签: android android-context

在我的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的可能情况?

2 个答案:

答案 0 :(得分:2)

静态初始化程序可以在创建任何对象实例之前在类加载时调用该方法。此外,类构造函数可以在调用onCreate方法之前调用该方法,因此,该方法可能返回null。

答案 1 :(得分:2)

请牢记以下陈述,您可以放心使用!

  

的onCreate()   在应用程序启动时调用,在创建任何活动,服务或接收者对象(不包括内容提供者)之前调用。

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

并查看以下帖子。

Using Application context everywhere?