Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。所以我们可以定制一个自己的Aplication类。以便于管理程序内一些全局的状态信息,比如全局Context。
首先创建一个MyApplicayion类继承自Application:
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
MyApplication中的代码非常简单。这里我们重写了父类onCreate()方法,并通过调用getApplicationContext()方法得到了一个应用级别的Context,然后提供了一个静态的getContext()方法,在这里将刚才获取到的Context进行返回。
接下来需要告知系统,当程序启动的时候应该初始化MyApplication类。
代码如下:
<application
android:name="com.example.networktest.MyApplication"
...>
</application>
指定MyApplication的时候一定要加上完整的包名,不然系统无法找到这个类。
任何一个项目都只能配置一个Application,如果再遇到需要在AndroidManifest.xml总配置application情况时,就在MyApplication中去调用功能的初始化方法就可以了。
以上来自《第一行代码》
~Context : Context是维持Android程序中各组件能够正常工作的一个核心功能类
1) Context是一个抽象类,其通用实现在ContextImpl类中。
2) Context:是一个访问application环境全局信息的接口,通过它可以访问application的资源和相关的类,其主要功能如下:
启动Activity
启动和停止Service
发送广播消息(Intent)
注册广播消息(Intent)接收者
可以访问APK中各种资源(如Resources和AssetManager等)
可以访问Package的相关信息
APK的各种权限管理
~创建View时,必须明确指定其Context
~创建Context
应用程序在以下几种情况下创建Context实例:
1) 创建Application 对象时, 而且整个App共一个Application对象
2) 创建Service对象时
3) 创建Activity对象时
因此应用程序App共有的Context数目公式为:
总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)