Android

Android Mの「App Standby」について

More than 3 years have passed since last update.


Android Mの「App Standby」について

[Doze mode][1]関連の話です。

Doze modeはシステム全体の省電力モードですが、App Standbyはアプリ単体の省電力モードです。

App Standbyについて調べた事を書いていきます。


App Standbyとは?

Android M から追加された機能でアプリ単体の省電力モードの事です。

デバイスを操作していない状態であれば「アプリはアイドル状態である」と判断できます。

以下の状態ではない限り、アプリは一定期間後にアイドル状態になります。


  • ユーザーによってアプリが明示的に起動される

  • アプリがフォアグラウンドプロセスである

  • アプリがロック画面または通知トレイにNotificationを生成する

  • ユーザーが明示的に設定画面からアプリを「省電力の最適化」状態から除外する

実際に動作を試すために公式のサイトを見ると以下の様な仕様が書かれていました。

You can test Doze mode by following these steps:

1. Configure a hardware device or virtual device with an Android 6.0 (API level 23) or higher system image.
2. Connect the device to your development machine and install your app.
3. Run your app and leave it active.
4. Force the app into App Standby mode by running the following commands:
> $ adb shell dumpsys battery unplug
> $ adb shell am set-inactive <packageName> true

5.Simulate waking your app using the following commands:
> $ adb shell am set-inactive <packageName> false
> $ adb shell am get-inactive <packageName>

6.Observe the behavior of your app after waking it. Make sure the app recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected.

要約するとこんな感じ。

1. Android 6.0(APIレベル23)またはより高いシステムイメージでハードウェア装置または仮想装置を構成してください。

2. Android端末をあなたの開発機械に接続してあなたのアプリをAndroidにインストールしてください。
3. あなたのアプリを走らせて、それを動作させたままにしてください。
4. システムに以下の命令を走らせることによってアプリを Standbyモードにします
` $ adb shell dumpsys battery unplug`
` $ adb shell am set-inactive <packageName> true`
5. アプリの動作中に以下のコマンドを打ってシミュレートしてください
` $ adb shell am set-inactive <packageName> false`
` $ adb shell am get-inactive <packageName>`
6. それを起こした後にあなたのアプリの動作を観察してください。アプリが問題なく待機モードから復帰することを確認してください。 特にアプリの通知とバックグラウンドジョブが予想通りに機能し続けるかどうか調べなければなりません。


packageName の見つけ方

この試験を行う為には、試験対象のアプリのパッケージ名を見つける必要があります。

Android端末に存在するパッケージ名については以下のコマンドを使って探すことが出来ます。

$ adb shell pm list packages

package:com.google.android.youtube
package:com.android.providers.telephony
package:com.android.sdm.plugins.connmo
package:com.google.android.googlequicksearchbox
package:com.android.providers.calendar
package:com.android.providers.media
package:com.google.android.apps.docs.editors.docs
package:com.google.android.onetimeinitializer
package:com.android.wallpapercropper
package:com.quicinc.cne.CNEService

Android端末に存在するパッケージ名が一覧になって表示されるので必要なパッケージ名を選択しましょう(「package:」を除いた名前が packageName になります )


実際のシミュレートは・・・ごめんなさい。忘れました。