Análisis del modo Doze de Android 8.1 (tres) lanzan WakeLock

En el primer análisis del modo Doze de Android 8.1 (1) sabemos que después de ingresar al modo Doze profundo, llamamos al setDeviceIdleMode () de PowerManagerService.java para liberar WakeLock. Ahora comenzamos a analizar el proceso de lanzamiento de WakeLock

PowerManagerService.java -> setDeviceIdleMode ()

        @Override
        public boolean setDeviceIdleMode(boolean enabled) {
            return setDeviceIdleModeInternal(enabled);
        }

PowerManagerService.java -> setDeviceIdleModeInternal ()

    boolean setDeviceIdleModeInternal(boolean enabled) {
        synchronized (mLock) {
            if (mDeviceIdleMode == enabled) {
                return false;
            }
            mDeviceIdleMode = enabled;
            updateWakeLockDisabledStatesLocked();
        }
        if (enabled) {
            EventLogTags.writeDeviceIdleOnPhase("power");
        } else {
            EventLogTags.writeDeviceIdleOffPhase("power");
        }
        return true;
    }

PowerManagerService.java -> updateWakeLockDisabledStatesLocked ()

    private void updateWakeLockDisabledStatesLocked() {
        boolean changed = false;
        final int numWakeLocks = mWakeLocks.size();
        for (int i = 0; i < numWakeLocks; i++) {
            final WakeLock wakeLock = mWakeLocks.get(i);
            if ((wakeLock.mFlags & PowerManager.WAKE_LOCK_LEVEL_MASK)
                    == PowerManager.PARTIAL_WAKE_LOCK) {
                if (setWakeLockDisabledStateLocked(wakeLock)) {
                    changed = true;
                    if (wakeLock.mDisabled) {
                        // This wake lock is no longer being respected.
                        notifyWakeLockReleasedLocked(wakeLock);
                    } else {
                        notifyWakeLockAcquiredLocked(wakeLock);
                    }
                }
            }
        }
        if (changed) {
            mDirty |= DIRTY_WAKE_LOCKS;
            updatePowerStateLocked();
        }
    }

¿Está familiarizado con él aquí? Es lo mismo de lo que hablamos en la optimización de la hibernación en espera de la aplicación de administración de ahorro de energía (6) de Android Sprd

 

 

Supongo que te gusta

Origin blog.csdn.net/liu362732346/article/details/86577388
Recomendado
Clasificación