天天看點

Android如何保持程式一直運作

在正常情況下,Android系統會讓程式和服務進入休眠狀态以節約電量使用。然而在開發Android程式時,有時候在程式運作的時候,不能讓系統休眠,否則有一些運作會停止,是以我們需要設定禁止休眠。

Android中設定禁止休眠有兩種方式:

1. 在View中設定FLAG_KEEP_SCREEN_ON。

實作上可以在代碼中設定,也可以在XML檔案中設定。

代碼如下所示:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

或者配置檔案對該View設定:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"

android:keepScreenOn="true"

android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">

這樣可以保持目前View所在的Activity一直在活動狀态運作,而且螢幕是高亮的。非常耗電!!

2.通過PowerManager來精細控制。

首先在Manifest.xml檔案裡面用user-permission聲明

<uses-permission android:name="android.permission.WAKE_LOCK"/>

<uses-permission android:name="android.permission.DEVICE_POWER" />

之後通過PowerManager服務來擷取電量控制鎖:

private void acquireWakeLock() {

if (wakeLock == null) {

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getCanonicalName());

wakeLock.acquire();

}

}

關鍵代碼在newWakeLock的第一個參數,可以有:

Flag Value CPU Screen Keyboard

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

*PARTIAL_WAKE_LOCK參數和其他不同,如果選擇了這個參數,那即時使用者按了關機鍵,CPU仍保持運作;而其他參數在使用者按了關機鍵之後,CPU即停止運作,如果不按關機鍵,系統在過一段時間休眠後,CPU仍保持運作。

在程式退出時,必須釋放WakeLock:

private void releaseWakeLock() {

if (wakeLock != null && wakeLock.isHeld()) {

wakeLock.release();

wakeLock = null;

}

}

這兩個方法分别在OnCreate/OnDestroy或者OnResume/OnPause中調用。