Android上下文Context

本文详细解析了Android中Context的概念,包括其作为应用全局信息接口的角色、系统如何实现具体Context,以及不同类型的Context如Application Context和Activity Context。还讨论了Context在访问资源、启动组件以及在实际开发中的应用场景,如在Dialog开发中的使用。
摘要由CSDN通过智能技术生成

Android的Context是一个经常用到的概念,由于它是一个抽象类所以更多时候我们见到或使用到的是它的子类,比如getApplicationContext(),getBaseContext(),getContext()。中文一般翻译成“上下文”,结合汉语中对上下文的解释不难理解Android环境中对Context的定义和重要性。Android应用是由一个个组件组成的(各个Activity,Service,View等),想要合理的沟通和运行这些组件就需要Context来作为“桥梁”。这篇文章就来好好总结下Android中Context相关的知识点。

1.概念

首先来看官方对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.

这段话告诉我们这几点信息:
1.Context是应用环境的全局信息接口;
2.Context是抽象类不能直接使用,具体实现交给Android系统;
3.Context用来访问资源和类,启动activity,brocadcast和接受intent等。

下面先好好解释下这3点信息。

1.1 应用全局信息接口

上面提到Context是Android各个组件沟通桥梁,主要就是四大组件+资源。看下面一张图:
在这里插入图片描述

Activity类继承了ContextThemeWrapper,而Service继承了ContextWrapper,都间接继承了Context。ContextImpl是Context的具体实现,ContextWrapper是对ContextImpl的进一步包装(利用mBase对象,实际是一个Context对象)。ActivityThread类是Android应用框架的核心对象,它就在ContextImpl类中。有了这些认知我们可以更好的理解官方概念中的“应用全局信息接口”这句话。

1.2 Android系统实现具体Context

Android的具体Context其实有多种,getApplicationContext()方法得到的是一个APP全局的Context,在Fragment中getActivity()方法得到的又是一个Activity类型的Context,View中又通常采用getContext()来获取Context。

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Context context0 = getApplicationContext();
        Context context1 = getApplication();
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值