手機暗屏下,後臺不能使用藍芽,後臺gps不能定位
阿新 • • 發佈:2019-02-04
一般情況下手機鎖屏後,部分手機,Android系統為了省電以及減少CPU消耗,在一段時間手機將會進入休眠狀態。
解決方案:
- 首先在AndroidManifest.xml中申請WakeLock許可權。
<uses-permission android:name="android.permission.WAKE_LOCK"/>
- 因為在鎖屏情況下,服務可能會停止
private PowerManager pm;
private PowerManager.WakeLock wakeLock;
@Override
public void onCreate() {
super.onCreate();
//建立PowerManager物件
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
//保持cpu一直執行,不管螢幕是否黑屏
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "CPUKeepRunning");
wakeLock.acquire();
}
@Override
public void onDestroy() {
wakeLock.release();
super.onDestroy();
}
原理:
PowerManager,手機的電源管理相關元件。 WakeLock,用於程式控制是否一直保持手機執行狀態元件。WakeLock的保持執行共包括四個型別,最好使用比較低的級別,以降低手機電池的使用量。
Flag值 | CPU | 螢幕 | 鍵盤 |
---|---|---|---|
PARTIAL_WAKE_LOCK | On | Off | Off |
SCREEN_DIM_WAKE_LOCK | On | Dim | Off |
SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off |
FULL_WAKE_LOCK | On | Bright | Bright |
所有的型別CPU都是保持執行,螢幕和鍵盤分為關閉、暗光、亮光三個級別,我們經常用的應該是PARTIAL_WAKE_LOCK,保持CPU執行就行了。