1.什么是Context
Context是一般翻译成“上下文,语境”,Android中Context是一个抽象类,Context的注释
Context是一个关于应用环境的全局信息接口,Context的实现类由Android系统提供,他允许访问指定的资源和启动Activity、broadcast等.
其实在Context中定义了一些成员变量和抽象方法,Activity、Service都是继承了Context,Context是提取出了Activity、Service共有的方法和成员变量。
Context的继承关系图,Context的整个设计采用了装饰器模式,ContextImpl继承Context抽象类,实现了Context类中的抽象方法,是Context的具体实现类。ConTextImpl通过
createActivityContext(),createAppContext()来为Activity和Application创建ContextImpl.在performLaunchActivity()中调用createActivityContext()来创建Context的实现类,然后调用Activity.attach()将创建好的Context实现类传入Activity中,因此Activity调用的Context方法都是调用Contextimpl实现的方法
2.Application
Application是保存全局状态的基类,这个类会比其他类更早实例化,当你的应用程序线程被创建时。
public Application() {
super(null);
}
Application只有一个构造方法,调用了父类ContextWrapper的构造方法,供应用层调用的方法主要是registerActivityLifecycleCallbacks(),registerComponentCallbacks().
3.Service
Service是一个应用组件,主要用于长时间不与用户交互或者为其他应用使用,每一个service必须声明在AndroidManifest中,Service可以通过Context.startService()或者Context.bindService()启动。像Activity和Application一样,Service运行在他们自身进程的主线程中,因此,如果Servicce如果要执行cpu密集(像播放MP3)或者阻塞(像网络)操作,必须新开一个线程。