Monday, 22 February 2016

アプリごとのwakelockが正確に分かる「Wakelock Detector」を紹介します(要root)

アプリごとの正確なwakelockを確認できるWakelock Detectorを紹介します。

Google play Wakelock Detector [Root]
Wakelock Detector [Root]
制作: UzumApps
評価: 4.2 / 5段階中
価格: 無料 (2016/2/11 時点)
posted by: AndroidHTML v3.1

動作環境

このアプリを動作させるためには端末をroot化している必要があります。root化とは、本来アクセスできないシステムやハードウェアにアクセスするための管理者権限を取得することです。操作を誤ればシステムを破壊する恐れもあるため、多くのメーカーはroot化が行えないように対策を講じています。
このアプリはroot化せずに使うこともできますが、再起動のたびにパソコンが必要で、セキュリティ的にも安全であるとは言い難いため、ここでは紹介しません。気になる方は「testing for kitkat - Post #337」をご覧ください。

wakelockとは?

Androidはユーザーが操作していない時にdeep sleepと呼ばれる省電力状態に移行して、消費電力を抑える仕組みになっています。wakelockはdeep sleepへの移行を抑止して、アプリをバックグランドで動作させ続けたり、通知が来た時に画面を点灯したり、動画再生時に画面を点灯したままにするための機能です。

アプリ開発者は、アプリがwakelockを取得する場合、必ずどこかのタイミングでwakelockを解除するように設計しなければなりません。ところが、設計不備でwakelockが解除されないアプリが実行されると、端末はdeep sleepモードに移行できず、スリープ中でも電池消費が激しくなったり、画面が消灯できなくなる現象が起こります。そのようなアプリを特定する時に役に立つのがWakelock Detectorというわけです。


CPU wakelockとscreen wakelockとは?

wakelockは厳密には4種類に分類することができますが、Wakelock Detectorでは画面が点いているか消えているかの2種類で分類します。画面が点いた状態のwakelockをscreen wakelockと呼びます。画面が消えた状態のwakelockをCPU wakelockと呼びます。


wakeup triggersとは?

wakelockとは別にAlarmManagerという機能があります。AlarmManagerは定期的にdeep sleepを解除してタスクを実行するための機能です。こちらも電池持ちに影響します。Wakelock DetectorではAlarmManagerでdeep sleepを解除した回数をwakeup triggersと呼びます。

使い方

初回起動時はroot権限を求められるので、許可してください。

アクションバーのアイテムの説明

起動時は全開終了時の画面から始まります。

まずはアクションバーのアイテムの説明から始めたいと思います。アクションバーとは画面上部に表示されるバーのことです。左から順に「Statistics(統計)」、「Sort by(並べ替え)」、「Refresh(更新)」が割り当てられています。

「Statistics(統計)」は「CPU wakelock」、「Screen wakelock」、「Wakeup triggers」を切り替えます。それぞれの違いは最初に説明した通りです。

「Sort by(並べ替え)」は「Running(実行中)」、「Usage(使用量)」、「ABCD..(昇順)」を切り替えます。Runningは実行中のアプリが最初に来るように並べ替えます。Usageはwakelockの使用時間の長い順に並べ替えます。ABCD..は昇順(あいうえお順)に並べ替えます。普通はどのアプリが電池を多く消費しているかを知りたいはずですのでUsageを使うのが良いと思います。

「Refresh(更新)」を押すと最新の状態に更新します。

画面の見方

統計の種類に関係なく、このようなアプリのリストが表示されます。

とりあえず目に付いた「Facebook」に注目します。右側に「4 s」と「x72」という文字が表示されています。「4 s」はwakelockの時間、「x72」はwakelockの回数を意味しています。時間が長く回数が多いほど電池を多く消費しているということです。上のバーはdeep sleep解除時間全体に占めるwakelock時間の割合を示しています。

ちなみにscreen wakelockで動画アプリのwakelock時間が異様に長く表示されるのは、再生中に画面をずっと点灯させ続けているためであり、正常な動作です。

対処法

電池を多く消費しているであろうアプリが判明したら、それに対処する方法を紹介します。

アンインストールする

使っていないアプリであればアンインストールすることで解決できます。他にも、FacebookであればSlimSocial for Facebookなどの電池消費の少ない代替アプリに乗り換える方法もあります。
Google play SlimSocial for Facebook
SlimSocial for Facebook
制作: Leonardo Rignanese
評価: 4.5 / 5段階中
価格: 無料 (2016/2/21 時点)
posted by: AndroidHTML v3.1

同期や通知の設定を見直す

同期や通知の間隔を設定できるアプリであれば、間隔を長くすることで電池消費を抑えることができます。
Twitterの同期の設定

Greenifyで冬眠させる

Greenifyで冬眠させると、バックグラウンド実行時にそのアプリが終了されるので、電池消費を抑えることができます。また、最近の機種ではあまりメリットはありませんが、空きメモリを確保することもできます。通知や同期も止まってしまうので、それらが必要のないアプリに限定されます。Xposedを導入していて、かつLINEなどGCM対応のアプリであれば、冬眠後も通知を受けることができます。GCMとはGoogle Cloud Messagingの略で、プッシュ通知を送信するためのサービスです。
Google play Greenify
Greenify
制作: Oasis Feng
評価: 4.4 / 5段階中
価格: 無料 (2016/2/21 時点)
posted by: AndroidHTML v3.1

No WakeLockでwakelockを制限する(要Xposed)

No WakeLockでwakelockを制限すると、電池消費を抑えることができます。Greenifyと異なるのは、アプリを終了せずにwakelockだけを制限する点です。そのため、空きメモリを確保することはできませんが、バックグラウンド実行時に終了すると都合の悪いアプリを制限するのに便利です。個人的には「Googleアプリ」を制限しています。Greenifyで冬眠してしまうと、スリープから復帰する度にランチャーが起動するまでのラグが生じてしまうためです。
Google play No Wakelock
No Wakelock
制作: linangran
評価: 4.3 / 5段階中
価格: 無料 (2016/2/21 時点)
posted by: AndroidHTML v3.1

情報元

No comments:

Post a Comment