美文网首页
工具技巧篇—获取全局Context

工具技巧篇—获取全局Context

作者: 陈大集 | 来源:发表于2015-10-31 14:13 被阅读939次

在Android开发中,我们经常会使用到Context对象,Context即上下文环境,如当我们想要输出调试信息时,经常使用的

Toast.makeText(this,"Android小技巧-获取全局Context", Toast.LENGTH_SHORT).show();
//public static Toast makeText(Context context, CharSequence text, @Duration int duration)
存在的问题

1.每次都需要传入Context对象十分繁琐;
2.一般是从Activity和Fragment等组件中获取,当方法脱离了它们后,无法获取,需要传入Context参数,治标不治本。
3.传统的做法限制了框架的发展,如无法将Toast方法封装,即�传统的方法是

public static toast(Context context,String msg){
    Toast.makeText(context,"Android小技巧-获取全局Context", Toast.LENGTH_SHORT).show();
}

传统的封装方式把Context的来源交给了调用者,未免有些不负责任,那么理想的方式是Toast只需关注要显示的msg,无需关注context,即

public static toast(String msg){
    Toast.makeText(全局Context,"Android小技巧-获取全局Context", Toast.LENGTH_SHORT).show();
}
解决的方案

Android提供了一个Application类,每当App启动时,系统会将Application进行初始化,并存在于App的整个生命周期中。

细心的开发者会注意到,我们可以在Application内对一些全局状态的信息进行管理,如Context、如Volley的RequestQueue、如Universal-Image-Loader的初始化。

那么,在Application中,我们只需在程序启动时获取一次Context,随后需要Context的地方只需从Application中获取即可。

核心代码如下:

//上下文
public static Context context;
public static Context getContext() {    return context;}

@Overridepublic void onCreate() {    
    super.onCreate();
    context = getApplicationContext();
}

整体代码

public class App extends Application {

    public static App app;//单例化Application
    public static App getApp() {    
        if (app == null) {        
            synchronized (App.class) { //线程安全           
                if (app == null) {                
                    app = new App();            
                 }        
             }    
        }    
       return app;
    }

    //上下文
    public static Context context;
    public static Context getContext() {    return context;}

    @Overridepublic void onCreate() {    
        super.onCreate();
        context = getApplicationContext();
    }
}

当然,别忘记了在AndroidManifest.xml中的Application标签添加

<application    
    android:name="包名.App"
    ....../>

相关文章

  • 工具技巧篇—获取全局Context

    在Android开发中,我们经常会使用到Context对象,Context即上下文环境,如当我们想要输出调试信息时...

  • Android高级技巧

    获取全局Context的技巧 Context类的结构 不难看出Context一共有三种类型,分别是Applicat...

  • 全局获取Context的技巧

    回想这么久以来我们所学的内容,你会发现有很多地方都需要用到Context,弹出Toast的时候需要、启动活动的时候...

  • 全局获取Context的技巧

    定制一个自己的Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。而我们可以定制一个...

  • 全局获取 Context 的技巧

    当应用程序的架构逐渐开始复杂起来的时候,很多的逻辑代码都将脱离 Activity 类,但此时又恰恰需要使用 Con...

  • 高级技巧

    全局获取Context 使用Intent传递对象 定制自己的日志工具 创建定时任务

  • Android中的高级技巧

    获取全局Context的技巧 我们首先看一下Context类的结构 不难看出Context一共有三种类型,分别是A...

  • 全局获取Context

    然后在清单文件,,这个需要全包名。。。。。

  • 全局Context

    全局Context 在许多方法执行的时候,都需要context做为参数。当你自己封装工具类等很多时候,你会获取不到...

  • 全局context技巧

    创建MyApplication继承Application 在AndroidManifest.xml清单文件中配置M...

网友评论

      本文标题:工具技巧篇—获取全局Context

      本文链接:https://www.haomeiwen.com/subject/cpofhttx.html