Android中Context是什么

一. 引言

在我看项目代码的时候,经常看到一些方法调用的时候都会放一个context对象,或者在Activity中直接放个this.为什么有这么多Context都是干嘛用的?

首先我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考下,一个Android程序和一个java程序他们的最大区别在哪里?Android不想java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity,Service,BroadcastReceiver等系统组件,而这些组件并不像一个普通Java对象new下就创建一个实例,而Android需要有各自的上下文环境,也就是说我们这里讨论的Context可以总结为:
Context是维持Android程序中各组件能够正常工作的一个核心功能类

可以看到,直系子类有两个,一个是ContextWrapper,一个是ContextImpl.那么从名字上可以看出,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能实现类.而ContextWrapper又有三个直接的子类,ContextThemeWrapper,Service和Application其中ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity

在这里我们至少看到了几个所比较熟悉的,Activity,Serivce还有Application.由此Content一共有三种类型,分别是Application,Activity和Service这三个类虽然不同作用,但是都属于Context的一种,而它们具体Contex的功能则是由ContextImpl类去实现的

二. Context作用

三. Context数量

根据上面,Context一共有Application,Activity和Service三种类型,因此应用程序中的Content数量的计算公式就可以这样写:

Context数量 = Activity数量 + Service数量 + 1个Application;

因为程序中可以有多个Activity和Service但是只能有一个Application

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值