做Android应用开发时,有时需要在应用前台运行时,禁止休眠,以下几种方法供参考。
方法一:
添加休眠锁,休眠锁必须成对出现。
private WakeLock mWakeLock;
private void acquireWakeLock() {
if(mWakeLock == null) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,
this.getClass().getCanonicalName());
mWakeLock.acquire();
}
}
private void releaseWakeLock() {
if(mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER" />
方法二:
在Activity布局中设置Windows属性进行控制,此种方法的局限性是只有在Activity类中有效,Activity退出时失效。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
方法三:
在View布局中添加属性,此种方法的好处是不一定非要在Activity界面运行时屏幕常亮才有效,View启动后可以自主设置。
View的xml布局中加入:
android:KeepScreenOn="true"
代码中执行是否保持屏幕常亮:
View.setKeepScreenOn(true);
View.setKeepScreenOn(false);