Context上下文理解及获得上下文的几种方式

Context理解

Context提供了一个应用的运行环境,在Context的大环境里,应用

才以访问资源,才能完成和其他组件、服务的交互,Context定义了

一套基本的功能接口,我们可以理解为一套规范,Activity Service

是实现这套规范的子类,这么说也许并不准确,因为这套规范实际是

被ContextImpl类统一实现的,Activity和Service只是继承并有选

择性地重写了某些规范的实现

Context相关类的继承关系

Context ---> ContextImx

        ---> ContextWrpper ---> ContextThemeWrpper ---> Acitivity

                           ---> Service

                           ---> Application

通过图上我们可以看出:Activity类 、Service类 、Application类本质上都是Context子类,

知道为什么老是在这些里面用到context

Application、Activity和Service作为Context的区别

1.相同点:

它们都间接继承了Context

2.不同点

首先看它们的继承关系,通过对比可以清晰地发现,Service和Application的类继承关系比较像,

而Activity还多了一层继承ContextThemeWrapper,这是因为Activity有主题的概念,而Service是没有界面的服务 
`   
,Application更是一个抽象的东西,它也是通过Activity类呈现的。Context的真正实现都在ContextImpl中,

也就是说Context的大部分方法调用都会转到ContextImpl中,而三者的创建均在ActivityThread中完成,Activity

启动的核心过程是在ActivityThread中完成的,这里要说明的是,Application和Service的创建也是在ActivityThread中完成的。

一个应用程序中有多少个context

答案显而易见:总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)

获的context几种方式

1.this 当前类上下文


2.HomeActivity.this 外部类的上下文


3.getApplication().this  这个是指应用的上下文


4.getContext()  这个一般用在调式或者没有上下文的类中
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值