备注:如下所有代码截图均来自于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/settingslib/applications/Storage

本文深入解析Android 11中应用大小显示的实现原理,从Settings应用的AppStorageSettings.java开始,逐步追踪到Installer.java、InstalldNativeService.cpp,分析如何利用配额统计快速获取存储信息,以及缓存清理算法和磁盘空间保护措施。
最低0.47元/天 解锁文章
174

被折叠的 条评论
为什么被折叠?



