1. 程式人生 > >手機暗屏下,後臺不能使用藍芽,後臺gps不能定位

手機暗屏下,後臺不能使用藍芽,後臺gps不能定位

一般情況下手機鎖屏後,部分手機,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執行就行了。