Как отключить Wakelock?
Я пытаюсь включить бесконтактный замок при портретной ориентации и выключить при альбомной ориентации, используя этот код, но он всегда остается активным:
//in onCreate() of my Activity
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mProximityWakeLock = pm.newWakeLock(32, ""); // proximity_wake_lock=32
mProximityWakeLock.setReferenceCounted(false);
if (getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "non landascape", Toast.LENGTH_SHORT).show();
if (!mProximityWakeLock.isHeld()) {
mProximityWakeLock.acquire();
Toast.makeText(this, "acquired", Toast.LENGTH_SHORT).show();
}
if (!mProximityWakeLock.isHeld())
Toast.makeText(this, "not held", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, " held", Toast.LENGTH_SHORT).show();
} else {
if (!mProximityWakeLock.isHeld())
Toast.makeText(this, "not held", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, " held", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "landascape", Toast.LENGTH_SHORT).show();
if (mProximityWakeLock.isHeld()) {
mProximityWakeLock.release();
Toast.makeText(this, "released", Toast.LENGTH_SHORT).show();
}
}
Похоже, это никогда не проводится, когда на ландшафте... Как isHeld()
на самом деле работает? В чем проблема с кодом?
1 ответ
Похоже, вы создаете новый wakelock каждый раз, когда вы поворачиваете экран, и новый wakelock не удерживается.
Если вы посмотрите в журналах, вы можете увидеть что-то о протекающих вейк-шлюзах.