因为Activity本身就就是一个Context,当在Activity中使用Context时可以直接获取。但是当脱离Activity使用Context时,就有点麻烦了。
Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。可以定制自己的Application类,以便于管理程序内一些全局的状态信息,这里我们获取Context。
public class MyApplication extends Application{
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext(); //获取一个应用级别的Context
}
public static Context getContext() {
return context;
}
}
接下来要告知系统当程序启动时应该初始化MyApplication类,而不是默认的Application类。在Androidmanifest.xml文件的<application>标签下指定就可以了。
<application
android:name="com.yifeng.chaoshibang.ChaoshibangApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme" >
</application>
注意这里要加上完整的包名,不然系统无法找到这个类。
以后再使用context就可以调用MyApplication.getContext()。