全局获取Context的技巧

本文摘自《第一行代码》,很有用处,分享下。

对于初学者的我还从来没有为得不到Context而犯愁过,因为我的很多操作都是在Activity进行的,而Activity本身就是一个Context对象。但是我稍微想自己发挥发挥就遇到了这个问题,因为实际操作中很多的逻辑代码都是脱离Activity类的,所以想写个Toast都不会了,直到我看到这个方法,瞬间感觉逼格高了很多。

这个技巧可以让你在项目的任何地方都能够轻松的获取到Context。Android提供了一个Application类,每当应用启动的时候,系统就会自动的将这个类进行初始化。而我们可以定制一个自己的Application类,以便于管理程序内一些全局的状态信息,比如说全局Context。

1、首先需要创建一个MyApplication类继承自Application

public class MyApplication extends Application {
    private static Context context;

    public void onCreate() {
        // getApplicationContext方法得到了一个应用程序级别的Context
        context = getApplicationContext();
    }

    // 通过这个静态的getContext方法,在这里将刚才获取到的Context进行返回
    public static Context getContext() {
        return context;
    }
}

2、接下来需要告知系统,当程序启动的时候应该初始化MyApplication类,而不是默认的Application类,下面就需要在AndroidManifest.xml文件中的application标签下制定下就可以了

...
<application
<--! 在这里指定MyApplication的时候一定要加上完整的包名 -->
    android:name="com.example.test.MyApplication"
    ... >
    ...
</application>

这样我们就已经实现了一种全局获取Context的机制,之后不管你想在项目的什么地方使用Context,只需要调用下MyApplication.getContext()就可以了,比如

Toast.makeText(MyApplication.getContext(), "OK", 10000).show();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值