1.使用PowerManager:
@Override
protected void onResume() {
super.onResume();
acquireWakeLock();
}
@Override
protected void onPause() {
super.onPause();
releaseWakeLock();
}
private void acquireWakeLock() {
if (wakeLocak == null) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLocak = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "tag");
wakeLocak.acquire();
}
}
private void releaseWakeLock() {
if (wakeLocak != null && wakeLocak.isHeld()) {
wakeLocak.release();
wakeLocak = null;
}
}
說明:WakeLock的設置是 Activiy 級別的,不是針對整個Application應用的。
使用時候還應該加上權限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
2.使用Window.setFlags或者addFlags方法:
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
或者
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Google推薦使用第二種方式,第二種方式不用添加權限,而且只是對屏幕,而不會使cpu一直消耗。