问题背景
切换系统主题时,发现systemUI以及Launcher切换较慢,尤其是在用户快速操作时。
而这种变化涉及到ConfigChange,典型的例子就是白天黑夜模式的切换(uimode)
解决方案
修改类:
/frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
让我们先来看看config change时走的一些方法逻辑
本文以下拉状态栏的快捷按钮深色主题切换为例;
该快捷按钮类为 UiModeNightTile.java,直接看点击事件:
/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
@Override
protected void handleClick(@Nullable View view) {
if (getState().state == Tile.STATE_UNAVAILABLE) {
return;
}
boolean newState = !mState.value;
// 设置主题模式
mUiModeManager.setNightModeActivated(newState);
// 更新该开关的状态
refreshState(newState);
}
调用UiModeManager#setNightModeActivated() 方法:
/frameworks/base/core/java/android/app/UiModeManager.java
@RequiresPermission(android.Manifest.permission.MODIFY_DAY_NIGHT_MODE)
public boolean setNightModeActivated(boolean active) {
if (mService != null) {
try {
// mService 为 UiModeManagerService 的对象
return mService.setNightModeActivated(active);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
return false;
}
/frameworks/base/services/
版权归原作者 修理工yin 所有, 如有侵权,请联系我们删除。