Android开发之获取全局context技巧

来源:互联网 发布:java 设计通用api接口 编辑:程序博客网 时间:2024/05/16 07:55

前言

对于一个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();
0 0
原创粉丝点击