Android之Context解析

本文详细解析了Android中的Context类,包括其定义、继承关系及其在应用中的使用场景。具体介绍了Context作为应用程序上下文的重要作用,以及如何通过不同类型的Context对象进行资源访问和服务交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Context类,在Android的开发中十分的常见,在Activity,Service和BroadcastReceiver中都会用到它。

一.Context类

要了解Context类,可以从以下三个方面进行:

1.描述应用程序的环境信息,即上下文。

2.它是一个抽象类(abstract class)。

3.访问应用程序的资源,与其他组件,服务进行交互。

首先来看一下Context类的继承关系:


从上表可以看出,Context类有两个直接子类。

ContextWrapper:功能封装类。

ContextImpl:功能实现类。

在ContextWrapper类下面还有三个子类,其中包括我们常见的Application和Service。ContextThemeWrapper是一个带有主题封装功能的类,所以Activity继承与它。

二.Context类的使用

了解了Context类的继承情况,再来说一下在那些情况下使用Context类。

在Android编程中,Context类可以说是无处不在,弹出Toast,启动Activity,启动Service等等。那么应该在什么情况下来创建Context类呢,可以从以下三个方面来理解:

1.创建Application对象时。

2.创建Activity对象时。

3.创建Service对象时。

由此可知,在一个Android程序中,Context数量 = Activity数量+Service数量+1(一个APP对象只能有一个Application)。在通常情况下,这三种类型的Context对象是可以通用的,需要特别说明的是,在启动Activity或弹出Dialog的情况下,只能使用Activity类型的Context。因为启动一个Activity是在建立在另一个Activity的基础上,同样弹出Dialog也必须基于Activity。

在使用Context的过程中,一般在Activity中,只需要传递一个this即可,匿名内部类则需要传递Activity.this,getApplicationContext是获得这个项目的Context,该Context是唯一的,在AndroidManifest中唯一指定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值