Android开发之获取全局context技巧

前言

对于一个android开发者来说,context一定不会陌生。

通常情况下,我们再需要context的方法中,传入context参数即可。然而,以面向对象的思维来编程,这并不是一个很好的做法,将责任推卸给调用者,不但增加了调用者的负担,也让开发者对于方法的理解构成障碍。

接下来我们将介绍一种更好的实现方法,以便让你在项目的任何地方都能够轻松获取context。

Android提供了Application类,每当应用启动的时候,系统会自动将这个类进行初始化。我们可以定制一个自己的Application类,以便管理app中一些全局的状态信息,比如说全局的context.

定制自己的Application类

创建一个MyApplication类继承自Application,代码如下:

import android.app.Application;
import android.content.Context;

/**
 * <p>
 * 此类用来初始化应用中通用的信息
 * </p>
 * 
 * @author jiangbing
 *
 */
public class MyApplication extends Application {

    /** The global context */
    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();

        // TODO
        // Here, you can initialize some global infos ...

        // 1.init context
        mContext = getApplicationContext();

    }

    /**
     * You can get the context anywhere.
     * 
     * @return Context 全局context
     */
    public static Context getContext() {
        return mContext;
    }
}

可以看到,MyApplication 中的代码非常简单。这里我们重写了父类的 onCreate()方法,并通过调用 getApplicationContext()方法得到了一个应用程序级别的 Context,然后又提供了一个静态的 getContext()方法,在这里将刚才获取到的 Context 进行返回。

接下来我们需要告知系统,当程序启动的时候应该初始化 MyApplication 类,而不是默认的 Application 类。这一步也很简单,在 AndroidManifest.xml 文件的标签下进行指定就可以了,代码如下所示:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >
    ……
    <application
    android:name="com.example.test.MyApplication"
    …… >
    ……
    </application>
    </manifest>

接下来,我们就可以在任何需要context调用即可:

    MyApplication.getContext();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值