备注:如下所有代码截图均来自于android11 源码
问题背景:
Android11版本下,设置-应用和通知-所有应用信息-单个app应用信息详情,应用大小的显示,具体的应用大小是如何从底层传递到上层显示出来的?
我们先从上层开始分析,一步一步往下看,分析显示的应用大小是如何获取得到的
首先单个app应用信息详情页面显示的地方,在/packages/apps/Settings/src/com/android/settings/applications/AppStorageSettings.java 类中,在onLoadFinished()方法中通过了Loader加载了应用存储结构:AppStorageStats
而加载器Loader是在onCreateLoader()方法中创建的,通过实例化FetchPackageStorageAsyncLoader类来创建的。注意,实例化FetchPackageStorageAsyncLoader时有传入一个参数ApplicatioiInfo mInfo,这个是通过应用包名获取ApplicationInfo实例,后续获取应用大小都与这个参数相关联。在FetchPackageStorageAsyncLoader.java中loadInBackground()方法中获取到的AppStorageStats对象
下面追踪到
packages/SettingsLib/src/com/android/setting