Context还有哪些你不知道的?,android系统开发面试题

本文详细探讨了Android中的Context,从Context的概念、作用域、数量以及Application Context的设计等方面进行了解析。强调了Context在不同场景下的使用规则,特别是Activity、Service和Application之间的差异。还提到了在非Activity上下文中获取Application实例的方法,如getApplicationContext()。最后讨论了ContextWrapper类以及getBaseContext()返回的ContextImpl对象,揭示了Context的底层实现。
摘要由CSDN通过智能技术生成

从程序的角度上来理解:Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。

查看类的继承关系:ctrl + H (Windows系统)

在这里插入图片描述

应用在三种情况下会创建Context对象(即通常说的context):

1> 创建Application 对象时,即第一次启动app时。 整个App共一个Application对象,所以也只有一个Application 的Context,Application销毁,它也销毁;

2> 创建Activity对象时。Activity销毁,它也销毁;

3> 创建Service对象时。Service销毁,它也销毁。

由此可以得到应用程序App可以创建的Context(Activity和Service没启动就不会创建)个数公式一般为:

总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context对象)

2、源码中的Context

================================================================================

/**

  • Interface to global information about an application environment. This is

  • an abstract class whose implementation is provided by

  • the Android system. It

  • allows access to application-specific resources and classes, as well as

  • up-calls for application-level operations such as launching activities,

  • broadcasting and receiving intents, etc.

*/

public abstract class Context {

/**

  • File creation mode: the default mode, where the created file can only

  • be accessed by the calling application (or all applications sharing the

  • same user ID).

  • @see #MODE_WORLD_READABLE

  • @see #MODE_WORLD_WRITEABLE

*/

public static final int MODE_PRIVATE = 0x0000;

public static final int MODE_WORLD_WRITEABLE = 0x0002;

public static final int MODE_APPEND = 0x8000;

public static final int MODE_MULTI_PROCESS = 0x0004;

.

.

.

}

源码中的注释是这么来解释Context的:Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。就是说,它描述一个应用程序环境的信息(即上下文);是一个抽象类,Android

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值