我尝试了几种已发布的解决方案,试图在Android中关闭屏幕,包括:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
结果没有变化。
WindowManager.LayoutParams param = getWindow().getAttributes();
param.screenBrightness = 0;
param.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(param);
导致屏幕略微变暗(在Android 4.2.1上)
//Release all previously held WakeLocks
if (mWakeLock.isHeld()) {
mWakeLock.release();
}
//Then acquire a partial wake lock (which should allow the display to turn off)
PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
mWakeLock = powerMan.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Partial WakeLock");
mWakeLock.acquire();
结果没有变化。
最后,非法
PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
powerMan.goToSleep(1000);
显然不起作用,因为:
<uses-permission android:name="android.permission.DEVICE_POWER" />
是不允许的(对于非系统应用程序)。
我假设这些问题是因为我的应用是android:theme="@style/FullscreenTheme"
。
有没有可行的解决方案让全屏应用程序在不牺牲美妙的全屏主题的情况下进入睡眠状态?
答案 0 :(得分:0)
在写完一个简单的答案试图发布到@CommonsWare之后,我发现问题没有持续存在。
我多次梳理我的代码,仍然没有找到任何可能导致屏幕保持清醒的内容。我从头开始重写整个应用程序(总是一个很好的练习,结果是更清晰的逻辑),问题就消失了。
经验教训 - 如果其他所有方法都失败了,请重新编写所有内容。这本身就很有用:)