Application

      Application、Activity、Service都是ContextWraper的子类,ContextWrapper是Context的包装类,在ContextWrapper类中,有一个attachBaseContext方法,这个方法传递进去的参数就是ContextImpl的实例,也就是Context的实现类实例。而ContextWrapper中各种方法的调用都是间接调用的ContextImpl中的方法。

     Application初始化过程  Application构造函数->attachBaseContext-> onCreate

所以在Application构造函数中不能使用Context中有关函数,因为还没有被实例化,会报空指针。

     Application会在启动Android应用程序的时候被调用。

     Application属于系统组件,是由系统创建的,直接new Application相当于是一个普通的Java对象,不具备用Context能力,所以使用new Applicaition的context功能的时候,常常会崩溃。

     Application全局只有一个,本身就是单例了,不再需要使用单例模式去为它做多重实例保护了。

原文地址:https://www.cnblogs.com/SA226343/p/7201396.html