在很多地方需要用到Context,弹出Toast、启动活动、发送广播、使用通知等。
活动本身就是一个Context对象,但是很多情况下逻辑代码将脱离Activity类,但又需要Context,这时我们就需要一个解决方案来解决这个问题了。
Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。我们可以定制一个自己的Application类,以便于管理程序内一些全局的状态信息,比如说全局Context。
- 创建一个MyApplication类
- 创建一个MyApplication类extends自Application。
- 重写父类的onCreat()方法,通过调用getApplicationContext()方法得到一个应用程序级别的Context
- 提供getContext方法,将获取的Context进行返回
- 修改AndroidManifest.xml
- 在AndroidManifest.xml文件的 < application>标签下进行指定初始化MyApplication类。此处一定要加上完整的包名,不然系统无法找到这个类。
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="firstcode.zs.com.fc_13_1">
<application
android:name="firstcode.zs.com.fc_13_1.MyApplication"
...
</application>
</manifest>
有了这个类,在使用的时候就可以这样了
Toast.makeText(MyApplication.getContext(), "", Toast.LENGTH_SHORT).show();