获得Application Context

本文深入解析了在Android应用中如何通过getApplicationContext()方法获取ApplicationContext。从ContextWrapper类开始,逐步剖析了mBase字段的作用,以及在ContextImpl和LoadedApk类中如何处理此请求,最终在LoadedApk的makeApplication方法中创建并返回mApplication。

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

获得Application Context

在应用程度中,可以直接通过getApplicationContext()方法来获得Application Context,下面从getApplicationContext这个方法开始分析:

Created with Raphaël 2.1.2ContextWrapperContextWrapperContextImplContextImplLoadedApkLoadedApkgetApplicationContextgetApplication

首先看一下getApplicationContext实现:

@Override
    public Context getApplicationContext() {
        return mBase.getApplicationContext();
    }

mBase是ContextImpl类型的对象,所以进入ContextImpl里面调用getApplicationContext()

 @Override
    public Context getApplicationContext() {
        return (mPackageInfo != null) ?
                mPackageInfo.getApplication() : mMainThread.getApplication();
    }

mPackageInfo是LoadedApk类型的对象,由于应用程序已经启动,就进入到LoadedApk类中继续处理

Application getApplication() {
        return mApplication;
    }

mApplication是一个Context对象,在LoadedApk类的makeApplication方法中创建的

Application Context 的介绍到此结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值