WakeLockはシステムを常に起動させる
1532 ワード
前編ではalaerm,timer,thread
後者には、システムが常に起動状態にあることを保証できないという「欠陥」がある.例えばUSBを抜いて待機した後、私が会社でやっていたプロジェクトの一部の機能は、バックグラウンドサービスが一定時間おきにサーバにデータを送信する必要があるため、後の2つを使うと待機後にサーバがデータを受信していないことが明らかになり、解決策は以下の通りです.
後者には、システムが常に起動状態にあることを保証できないという「欠陥」がある.例えばUSBを抜いて待機した後、私が会社でやっていたプロジェクトの一部の機能は、バックグラウンドサービスが一定時間おきにサーバにデータを送信する必要があるため、後の2つを使うと待機後にサーバがデータを受信していないことが明らかになり、解決策は以下の通りです.
/**
* 1、android
*
*
* PowerManagerService 2 。
* //
* Intent.ACTION_SCREEN_ON
* //
* Intent.ACTION_SCREEN_OFF
*
*/
/**
* Android WakeLock 。- activity
* activity service
*
* <uses-permission android:name="android.permission.WAKE_LOCK"/>
*/
public void wakeLock(){
//
PowerManager manager =(PowerManager)this.getSystemService(Context.POWER_SERVICE);
// wakelock , ,
WakeLock wak = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK| PowerManager.ON_AFTER_RELEASE,
this.getClass().getCanonicalName());
//WakeLock
// PowerManager.PARTIAL_WAKE_LOCK cpu ,
// PowerManager.SCREEN_DIM_WAKE_LOCK cpu , ,
// PowerManager.FULL_WAKE_LOCK cpu ,
// PowerManager.ACQUIRE_CAUSES_WAKEUP
// PowerManager.ON_AFTER_RELEASE
//
wak.acquire();
}
/**
* WakeLock
*/
public void releaseLock(){
if (null != wakeLock && wakeLock.isHeld()){
wakeLock.release();
wakeLock = null;
}
}