![Android进阶解密](https://wfqqreader-1252317822.image.myqcloud.com/cover/331/31186331/b_31186331.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.3 Application Context的获取过程
当我们熟知了Application Context的创建过程之后,那么它的获取过程会非常好理解。我们通过调用getApplicationContext方法来获得Application Context,getApplicationContext方法在ContextWrapper中实现,如下所示:
![](https://epubservercos.yuewen.com/D63A94/16896237205618706/epubprivate/OEBPS/Images/figer148.jpg?sign=1739300480-S0eYUBmfPB9XNQOAYw6NnjsgkbEHesKN-0-b7a37ead3ca393fac9363163b3d067ef)
mBase指的是ContextImpl,我们来查看ContextImpl的getApplicationContext方法:
![](https://epubservercos.yuewen.com/D63A94/16896237205618706/epubprivate/OEBPS/Images/figer149.jpg?sign=1739300480-N5y9fD0HjEdt6Q1Szs5lU2NnIeRTjDRz-0-75ecaddf891d14a5c68a9506df56cca3)
如果LoadedApk类型的mPackageInfo不为null,则调用LoadedApk的getApplication方法,否则调用AvtivityThread的getApplication方法。由于应用程序这时已经启动,因此LoadedApk不会为null,则会调用LoadedApk的getApplication方法,如下所示:
![](https://epubservercos.yuewen.com/D63A94/16896237205618706/epubprivate/OEBPS/Images/figer150.jpg?sign=1739300480-BxDXm55TSi8HhYKIdTIdMHfCh4IB7asH-0-24e858d655ec65140092de8b5dfc161a)
这里的mApplication我们应该很熟悉,它在上文LoadedApk的makeApplication方法的注释5处被赋值。这样我们通过getApplicationContext方法就获取到了Application Context。