一、Contxet解析
1、郭霖Android Context完全解析
2、改写Context
3、Context博客
二、全局获取Context的技巧
Android提供了一个Application类,每当应用程序启动时,系统会自动将这个类初始化,通过自定义一个MyApplication类可以便于管理程序内一些全局的状态信息,如全局Context
具体使用步骤如下:
1、自定义MyApplication类
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
//调用getApplicationContext()方法获取一个应用程序级别的Context
}
public static Context getContext(){
return context;
}
}
2、在注册文件下进行指定
<application
android:name=".MyApplication"
.....
</application>
3、在指定位置获取实例
public class HttpUtil {
public static void sendHttpRequest(final String address,final HttpCallbackListener listener){
if (!isNetwork()){
Toast.makeText(MyApplication.getContext(),"network is unavailable",Toast.LENGTH_SHORT).show();
return;
}
...
private static boolean isNetwork(){
//具体执行逻辑
return true;
}
}
4、注意:由于任何一个项目都只能配置一个Application,因此对于Litepal就不能如下方法
可以在MyApplication中的onCreate()方法中进行初始化
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
LitePal.initialize(context);
}
public static Context getContext(){
return context;
}
}