当应用程序的架构逐渐开始复杂的时候,很多的逻辑代码都会脱离Activity类,而这个时候又需要使用Context时,就会比较头疼,这里介绍一种简便的方法。
Android提供了一个Application类,每当应用程序启动的时候,系统会自动的将这个类进行初始化。而我们完全可以定制一个自己的Application类,以便于管理程序内的一些全局状态信息,比如说全局Context。
定制一个属于自己的Application类只需要两步:
(1)创建一个MyApplication类继承自Application:
public class MyApplication extends Application{
public static Context context;
@Override
public void onCreate() {
context = getApplicationContext();
}
public static Context getContext(){
return context;
}
}
通过重写父类的onCreate()方法,调用getApplicationContext()方法得到一个程序级别的Context,然后通过getContext()方法将获取到的Context进行返回。
(2)在AndroidMainfest.xml文件中指定我们的MyApplication类,以便程序启动的时候初始化自己的MyApplication,而不是系统默认的Application类:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplicationtest"
android:versionCode="1"
android:versionName="1.0" >
......
<application
android:name="com.example.myapplicationtest.MyApplication"
...... >
......
</application>
</manifest>
注意这里自己指定MyApplication的时候一定要加上完整的包名,不然系统将无法找到这个类。
这个时候我们就已经完成了一个自己的Application类,并可以在程序的任何地方获取Context,只要调用一下MyApplication.getContext()方法即可。