全局获取Context的技巧
全局获取Context的技巧
在android开发中,很多地方都要用到Context上下文这个类对象,比如:弹出 Toast
的时候需要、启动活动的时候需要、发送广播的时候需要、操作数据库的时候需要、使用通
知的时候需要等。
如果是在Activity中,那么获取这个context对象很容易,因为Activity本身就继承Context,直接受用this就可以了。
但是对于比较复杂的逻辑,这些代码没有放在Activity中,那么,获取Context就显得不是那么容易了。
这里告诉大家一个技巧:
Android 提供了一个 Application 类,每当应用程序启动的时候,系统就会自动将这个类
进行初始化。 而我们可以定制一个自己的 Application 类, 以便于管理程序内一些全局的状态信息,比如说全局 Context。
1,新建一个类MyApplication继承Application.
代码如下:
- package com.example.networktest;
- public class MyApplication extends Application {
- private static Context context;
- @Override
- public void onCreate() {
- context = getApplicationContext();
- }
- public static Context getContext() {
- return context;
- }
- }
2,在 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.networktest.MyApplication"
- …… >
- ……
- </application>
- </manifest>
注意:指定 MyApplication 的时候一定要加上完整的包名,不然系统将无法找到这
个类。
这样我们就已经实现了一种全局获取 Context的机制,之后不管你想在项目的任何地方
使用 Context,只需要调用一下 MyApplication.getContext()就可以了。