关闭

Application、Activity、Context的关系

48人阅读 评论(0) 收藏 举报

参考http://blog.csdn.net/woaieillen/article/details/10234807

Application继承关系图

Activity继承关系图

  • 从上面两张图我们可以看出:Application和Activity都是继承自Context
  • Application对象是整个应用的上下文(通过打印日志可知:无论在哪里,通过getApplication或getApplicationContext得到的都是同一个Cotext对象,也就是应用的上下文),而Activity则不同,虽然都是继承自Context,但是在Activity中this和getApplication(getApplicationContext)得到的对象不是同一个!Activity的this这个上下文可用于界面UI的构造等(如弹窗,new View),而Application则不行。
  • 在Acctivity中通过getParent获得的也是Activity对象(父activity)。顺便扩展一下,这个方法是只有当activity是一个嵌入式的activity时才返回父activity(否则为null)。如下,查看Activity源码的说明:

      /** Return the parent activity if this view is an embedded child. */
      public final Activity getParent() {
        return mParent;
      }
  • 通过 getBaseContext获得的上下文对象则各不相同,引用google工程师的一句话:

    Don’t use getBaseContext(), just use the Context you have.
    不要使用getBaseContext(),只使用你有的Context。

  • Application(或者说应用的上下文对象)是和应用程序关联的,并且在程序的生命周期内,总是一样的。而Activity(Activity的上下文)是关联在某个活动上的,随着Activity的销毁(比如横竖屏切换等情况),这个Context也会被销毁N多次。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5732次
    • 积分:399
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论