您的位置:首页 > 移动开发 > Android开发

Android中获取全局的Context技巧

2016-03-03 20:32 351 查看
       在我们平常的开发中,很多时候我们新建的一个普通的java类文件(非Activity类的),在某些地方我们需要用到Context,弹出Toast的时候要、启动活动的时候要、发送广播的时候要、操作数据库和弹出通知的时候等。

       由于活动本身就是一个Context对象,在Activity活动里面获得Context很简单,但是当很多逻辑代码他不是Activity的时候,那怎么能获取到Context呢?当然你可以在要调用的方法里面添加一个Context context 参数,但是还有一种更好的方法可以解决。

       Android提供了一个Application类,每当程序启动的时候,系统会自动将这个类进行初始化,因此我们常可以看到某个程序引用第三方sdk需要初始化配置时,一般都会自定义一个Application类。而我们可以定制一个自己的Application类,以便与管理程序内一些全局的状态。

       定义一个自己的Application并不复杂,首先建立一个MyApplication类继承于Application

       代码如下:

public class MyApplication extends Application {

private static Context context;

@Override
public void onCreate() {
context = getApplicationContext();
}

public static Context getContext() {
return context;
}

}


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

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.networktest"
android:versionCode="1"
android:versionName="1.0" >
……
<application
android:name="com.example.contexttest.MyApplication"
…… >
……
</application>
</manifest>
注意:指定Application时一定要加上完整的包名。

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

如果大家对此文有什么疑问,欢迎指出交流,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: