背景:之前我们学习了网络编程,然后把代码封装到一个类里面,如果想要在那个类里面获取context用于Toast提示,是比较困难的事情。我们需要修改HttpUtil的函数的参数,在调用函数的时候把context传进去。虽然是一个可行的方案,但是这个把责任转移到了调用方,首先调用方能不能获取context是一个问题,其次这也让这个函数变得复杂。所以我们需要想办法让HttpUtil可以通过全局的函数来获取context。
第一步:定义MyApplication类,继承Application,并重写onCreate方法、增加getContext静态方法:
// NetworkTest - MyApplication.java
public class MyApplication extends Application{
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext() {
return mContext;
}
}
第二步:设计好了自己的Application类,还要让整个工程应用它,需要修改AndroidManifest.xml
<application
android:name="com.example.networktest.MyApplication"
......
注意包名必须写全,否则系统会找不到这个类。
第三步:大功告成,在需要的地方调用MyApplication.getContext()就可以了。