Android向上編の-WakeLock応用と問題の調査

2343 ワード

このシリーズではwakelockの使い方は言わないが、具体的な使い方はGoogleでいい.
wakelockの申請は釈放を忘れて携帯電話の消費電力が速すぎて、ユーザーの体験に深刻な影響を及ぼして、ユーザーは悪口を言って、メーカーは悪口を言って開発してペンを切ることを知っています.くだらないことを言いすぎて,本題に入る.
私たちは今onCreateでwakelockを申請しています.マニフェストで権限を申請する必要があることを忘れないでください.
mPm = (PowerManager) getSystemService(Context.POWER_SERVICE);
		mWakeLock = mPm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "test_wake");
		
		mWakeLock.acquire();
		Log.v(TAG, "isHeld:" + mWakeLock.isHeld());
そしてonDestroyでリリース
mWakeLock.release();

アプリケーションを開始する前にコマンドラインで実行します
adb shell dumpsys power > power.txt

アプリケーションを起動してから実行
adb shell dumpsys power > power2.txt

これらの情報は冗長すぎるため,ここでは本例が関心を持っている部分だけを貼り出す.power.txt部分の内容は以下の通りです
Auto Power Off:
  mAutoPowerOffEventTime: 0
  mAutoPowerOffTimeMillis: 0
  mAutoPowerOffTimeoutSetting: 0

Wake Locks: size=0

Suspend Blockers: size=4
  PowerManagerService: ref count=1
  PowerManagerService.AutoPowerOff: ref count=0
  PowerManagerService.Broadcasts: ref count=0
  PowerManagerService.WirelessChargerDetector: ref count=0
power2.txt
Wake Locks: size=2
  FULL_WAKE_LOCK                 'test_wake' (uid=10226, pid=6843, ws=null) (elapsedTime=8712)
  PARTIAL_WAKE_LOCK              'dnhttpNet' (uid=10114, pid=7050, ws=null) (elapsedTime=4273)

Suspend Blockers: size=4
  PowerManagerService: ref count=1
  PowerManagerService.AutoPowerOff: ref count=0
  PowerManagerService.Broadcasts: ref count=0
  PowerManagerService.WirelessChargerDetector: ref count=0
起動アプリケーション前logにwake locks:size=0と表示され、プレゼンテーションappを起動するとwake locksのサイズが2になり、そのうちtest_という名前がありますwakeのlockは私たちのために作成されました.一つは気にしないで、もう一つのサービスの中にあります.誰もが異なるかもしれませんが、このような状況に遭遇したら、高バージョンのシステムを選択して実行することができます.その後、Androidのシステムが完備すればするほど、より友好的なデバッグ情報があります.私はS 44.2.2版を使っています.
アプリケーションを終了したらwakeを見てみましょうlock、sizeがまた0になったことに気づいた.
Wake Locks: size=0

みんなはこのような卵の痛みの例を軽蔑してはいけない.肝心な時にあなたを傷つけるだろう.システム的なものについては実戦前に多くの準備をしておくと、何かあったら混乱せず、方向性を持ってロゴを調べることができます.各dumpsys powerの各フィールドの意味について、みんなはpowermanagerserviceのソースコードを検索して見ることができて、詰めているとは思わないでください.ここの情報ネット上はすべて東から西へ回っていて、自分で見てこそ信じることができます.