美文网首页
安卓开发之全局获取Context

安卓开发之全局获取Context

作者: 白於青 | 来源:发表于2017-05-27 16:25 被阅读0次

    某些情况下,我们并不能方便的获取上下文环境,因为我们所调用的函数或者类中有时并不存在相关的参数,放心啦,不要尬,安卓为我们提供了一个Applocation类,以便于我们去管理程序内的一些全局的状态信息,比如说全局Context。
      首先,我们需要定制一个自己的Applocation类去继承Applocation。示例如下:

    public class MyApplication extends Applocation {
    
        private static Context context;
    
        @Override
        public void onCreate() {
            super.onCreate();
            context = getApplicationContext();
        }
    
        public static Context getContext() {
            return context;
        }
    
    }  
    

    很简单吧,就是重写了父类的onCreate方法,利用函数getApplicationContext()获取了一个应用程序级别的Context,然后提供了一个静态的getContext方法将上述context返回。
    程序启动的时候会初始化Application类,我们要告知系统修改其默认做法,转而启动我们自定义的MyApplication类。具体来说就是在AndroidManifest.xml文件的<application>标签下进行指定。代码如下:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        ......
        <application
            android:name="com.example.test.MyApplication" 
            ......>
        ......
        </application>
    </manifest>
    

    需要注意的是,我们需要在该标签中输入你所开发项目的完整的包名。
      此外,《第一行代码》这本书中提到了一个很重要的问题:由于每个项目只能有一个Application,当我们使用第三方开源项目如Litepal等对application的配置有需求的资源时,就不能使用上述方法重复配置了,错误的示范如下:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        ......
        <application
            android:name="com.example.test.MyApplication" 
            android:name="org.litpal.LitePalApplication"
            ......>
        ......
        </application>
    </manifest>
    

    辣么,要肿么做呢?很简单,在我们自定义的Application中加入对litepal的支持就好了,示例如下:

    public class MyApplication extends Applocation {
    
        private static Context context;
    
        @Override
        public void onCreate() {
            super.onCreate();
            context = getApplicationContext();
            LitePalApplication.initialize(context);
        }
    
        public static Context getContext() {
            return context;
        }
    
    }  
    

    这样一来,可以实现同样的配置效果,又不会发生冲突哈,棒棒哒!

    相关文章

      网友评论

          本文标题:安卓开发之全局获取Context

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