美文网首页
Android中Context的详细使用

Android中Context的详细使用

作者: 诸天八戒 | 来源:发表于2016-01-01 17:10 被阅读0次

    接触Android的Context是很久了,自从开发Android起就开始使用了,但是具体的使用,以及Context的来源就不是很清楚,小编最近深度了解了一下Context的使用方式,简单的介绍一下,简单通俗易懂的让你学会怎么详细的使用Context

    (1)、Context的来源史,这个可以去翻下源码,或者找下博客都有很多,我介绍下使用的方式。

    来自csdn

    以上是Context的继承图,Context的继承结构还是稍微有点复杂的,可以看到,直系子类有两个,一个是ContextWrapper,一个是ContextImpl。那么从名字上就可以看出,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类。而ContextWrapper又有三个直接的子类,ContextThemeWrapper、Service和Application。其中,ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity。

    (2)、使用方式,我们经常都是会先自己定义一个MyApplication来使用。使用的时候直接在Activity中使用:

    来自mask

    Services,Appaction,Activity都是ConText的实现类,所以都是可以之直接调用Context:

    来自mask

    代码中第二种方式拿到Context的方式,在项目中都可以使用,包括广播那些没有继承Context的实现类。

    在使用中也有些细节要注意,因为打开Context的源码中可以看到Context的代码执行顺序:

    来自csdn

    我们是直接调用onCteate()在里面进行代码操作,如果你没有先实现以上的方法,就直接进行拿到Context的方法会直接报错:

    来自mask

    所以我们使用的时候要小心,要先调用onCreate之后再调用Context里面的方法。我们很多项目中直接把Applicaion写成单列模式,但是Andorid并不建议使用,那么如果真的想要提供一个获取MyApplication实例的方法,比较标准的写法又是什么样的呢?其实这里我们只需谨记一点,Application全局只有一个,它本身就已经是单例了,无需再用单例模式去为它做多重实例保护了,代码如下所示:

    来自mask

    通过学习以上的代码列子,应该都会使用Context了吧,如果你想再接着深入了解Context的话可以参考一下博客:

    Context的使用

    相关文章

      网友评论

          本文标题:Android中Context的详细使用

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