FC 13.1 全局获取Context

在很多地方需要用到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();

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/84500420