Android PowerManagerEx.WifiDisable唤醒锁使我的系统处于唤醒状态

Android PowerManagerEx.WifiDisable唤醒锁使我的系统处于唤醒状态,android,Android,使用adb shell dumpsys batterystats Statistics since last unplugged: Time on battery: 1d 0h 47m 44s 996ms (96,6%) realtime, 4h 18m 38s 194ms (16,8%) uptime Total run time: 1d 1h 40m 4s 510ms realtime, 5h 10m 57s 708ms uptime, Screen on: 27m 18s 6

使用adb shell dumpsys batterystats

Statistics since last unplugged:
  Time on battery: 1d 0h 47m 44s 996ms (96,6%) realtime, 4h 18m 38s 194ms (16,8%) uptime
  Total run time: 1d 1h 40m 4s 510ms realtime, 5h 10m 57s 708ms uptime, 
  Screen on: 27m 18s 641ms (1,8%), Input events: 0, Active phone call: 0ms (0,0%)
[...]
  All partial wake locks:
  Wake lock 1000 PowerManagerEx.WifiDisable: 3h 16m 49s 619ms (1190 times) realtime
[...]
我的设备运行在Android 4.4(Kitkat)上。我试图通过每15分钟打开一次wifi并持续几秒钟,然后使用
setWifiEnabled(false)
再次将其关闭,从而最大限度地减少电池使用量。我的应用程序每分钟会唤醒一次,更新屏幕并再次发送设备进入睡眠状态,这似乎工作正常(24小时内屏幕打开27分钟)。但是,如果PowerManagerEx每分钟让系统保持10秒的清醒状态,那么这并没有帮助。(在有人指出最短唤醒时间为10秒之前:在我的系统上没有。我修补了PowerManagerService)。为什么会这样

我反编译了PowerManagerEx,发现了以下代码:

    public PowerManagerEx(Context context) {
        this.mContext = context;
        this.mInitComplete = DEBUG;
        this.mPmExHandlerThread = new HandlerThread("PowerManagerService.PowerManagerEx") {
            /* access modifiers changed from: protected */
            public void onLooperPrepared() {
                PowerManagerEx.this.mPmExHandler = new Handler() {
                    public void handleMessage(Message msg) {
                        switch (msg.what) {
                            case 1:
                                PowerManagerEx.this.setWakeLock(PowerManagerEx.this.mWakeLockWifiEnable);
                                PowerManagerEx.this.WiFiLoad();
                                PowerManagerEx.this.releaseWakeLock(PowerManagerEx.this.mWakeLockWifiEnable);
                                return;
                            case 2:
                                PowerManagerEx.this.setWakeLock(PowerManagerEx.this.mWakeLockWifiDisable);
                                if (!PowerManagerEx.this.WiFiIsEnabled()) {
                                    PowerManagerEx.this.releaseWakeLock(PowerManagerEx.this.mWakeLockWifiDisable);
                                    return;
                                } else if (PowerManagerEx.this.getTotalWakeLock() == 1 || PowerManagerEx.this.getTotalWakeLock() == PowerManagerEx.ANDROID_DRAW_AND_POST) {
                                    PowerManagerEx.this.WiFiUnload();
                                    PowerManagerEx.this.releaseWakeLock(PowerManagerEx.this.mWakeLockWifiDisable);
                                    return;
                                } else {
                                    PowerManagerEx.this.mPmExHandler.sendEmptyMessageDelayed(2, 3000);
                                    return;
                                }
[...]
由于Wifi已经关闭,它应该只释放唤醒锁,对吗?但很明显这需要10秒,我不知道为什么