前言
在上篇文章从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;
}
<