0


Android R config变化优先通知systemui、launcher

问题背景

切换系统主题时,发现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/

标签: android

本文转载自: https://blog.csdn.net/m0_61097519/article/details/135675050
版权归原作者 修理工yin 所有, 如有侵权,请联系我们删除。

“Android R config变化优先通知systemui、launcher”的评论:

还没有评论