深入探究getApplicationContext和getApplication是不是返回同一个对象?

本文深入探讨了Android开发中getApplicationContext和getApplication方法返回的对象是否相同。通过源码分析,揭示了两者虽然创建路径不同,但最终返回的是同一个Application实例。结论是,在mApplication非空的情况下,两者返回的对象是相同的。

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

前言

在上篇文章从getApplicationContext和getApplication再次梳理Android的Application正确用法中,我提到

但是我们知道了mApplication和context是两个不同的东西,所以严格意义上来说getApplicationContext和getApplication是不一样的,虽然很多时候他们返回的都是同一个对象

注意到我这里说的是这两个方法返回的对象是不一样的,因为我看到Activity中这两个方法返回了两个对象,就单纯的以为他们真的是不一样的,看来真是浅尝辄止了,做了个错误示范,代码还是要刨根问底啊。

找不同

今天来做一个纠正和补充,我们来继续往下看代码,看看他们是不是真的不一样,还是有相似之处:

public abstract Context getApplicationContext();

getApplicationContext我们知道是一个抽象方法,他的真正实现是在ContextImpl中:

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

再来看看getApplication方法(只存在于Activity和Service中):

public final Application getApplication() {
   
        return mApplication;
    }
<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值