前两篇分别记录了Settings主界面
静态xml加载设置项Android 10.0 Settings源码分析之主界面加载(一)
动态从AndroidManifest.xml中加载设置项Android 10.0 Settings源码分析之主界面加载(二)
本篇主要记录设置项加载完成后,界面显示更新流程。
先来继续接着前两篇分析,来看refreshAllPreferences()方法后面逻辑:
packages/apps/Settings/src/com/android/settings/dashboard/DashboardFragment.java
refreshAllPreferences():
final Activity activity = getActivity();
if (activity != null) {
Log.d(TAG, "All preferences added, reporting fully drawn");
activity.reportFullyDrawn();
}
updatePreferenceVisibility(mPreferenceControllers);
当所有的preference加载完成后,通知activity进行重绘显示;调用updatePreferenceVisibility()方法:
@VisibleForTesting
void updatePreferenceVisibility(
Map<Class, List<AbstractPreferenceController>> preferenceControllers) {
final PreferenceScreen screen = getPreferenceScreen();
if (screen == null || preferenceControllers == null || mBlockerController == null) {
return;
}
final boolean visible = mBlockerController.isBlockerFinished();
for (List<AbstractPreferenceController> controllerList :
preferenceControllers.values()) {
for (AbstractPreferenceController controller : controllerList) {
final String key = controller.getPreferenceKey();
final Preference pref