文章目录
通过系统设置中应用中的清空存储空间和清除缓存功能分析,来模拟一键清理相关的功能。
问题点
软件App 启动时候回崩溃、请求不了数据、一直加载、加载特别慢。 遇到过GMS Youtube 软件在平板产品上遇到过此问题。
部分产品,每次启动时候会有概率性崩溃,不稳定;加载不了视图。 比如 USBCamera 和 Camera 相关软件,链接设备节点的。
问题分析
在无解的情况下,清除应用缓存 或者 清空存储空间 发现解决了问题。
其它应用场景
应用退出时候清除自己一次,在某个app应用里面,控制其它app,进行清空缓存和数据。对于没有账户密码的产品 可以考虑这种方案。
修改源码
\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\applications\AppStorageSettings.java
日志分析
设置-应用-点击某个具体应用-应用信息-存储和缓存
可以看到如下日志
Switching to fragment com.android.settings.applications.AppStorageSettings
AppStorageSettings 源码分析
布局app_storage_settings.xml
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/storage_label">
<com.android.settingslib.widget.ActionButtonsPreference
android:key="header_view" />
<Preference
android:key="storage_used"
android:title="@string/storage_used"
android:summary="@string/storage_type_internal"
android:selectable="false"
android:layout="@layout/horizontal_preference" />
<com.android.settingslib.widget.LayoutPreference
android:key="change_storage_button"
android:selectable="false"
android:layout="@layout/single_button_panel" />
<!-- 应用大小 用户数据 缓存 总计 -->
<PreferenceCategory
android:key="storage_category"
android:title="@string/app_info_storage_title">
<Preference
android:key="app_size"
android:title="@string/application_size_label"
android:selectable="false"
android:layout="@layout/horizontal_preference" />
<Preference
android:key="data_size"
android:title="@string/data_size_label"
android:selectable="false"
android:layout="@layout/horizontal_preference" />
<Preference
android:key="cache_size"
android:title="@string/cache_size_label"
android:selectable="false"
android:layout="@layout/horizontal_preference" />
<Preference
android:key="total_size"
android:title="@string/total_size_label"
android:selectable="false"
android:layout="@layout/horizontal_preference" />
<com.android.settings.applications.SpacePreference
android:layout_height="8dp" />
</PreferenceCategory>
<PreferenceCategory
android:key="uri_category"
android:layout="@layout/preference_category_no_label"
settings:allowDividerAbove="false"
settings:allowDividerBelow="false">
<com.android.settingslib.widget.LayoutPreference
android:key="clear_uri_button"
android:layout="@layout/single_button_panel"
android:selectable="false" />
</PreferenceCategory>
</PreferenceScreen>
根据经验:清除存储空间和清除缓存 按钮就是 header_view
<com.android.settingslib.widget.ActionButtonsPreference
android:key="header_view" /><