アプリ開始型のネットワーク使用を最適化する

アプリが開始するネットワーク トラフィックに関しては、デベロッパー側で、必要なネットワーク リソースを計画し、アクセス スケジュールを設定できるため、通常は大幅に最適化できます。スケジュール設定を慎重に適用することで、デバイスの無線通信が休止する期間を長期化して、バッテリーを節約できます。ネットワーク アクセスのスケジュール設定に役立つ Android API がいくつかあります。その中には、他のアプリのネットワーク アクセスを調整し、バッテリー消費をさらに最適化できる機能もあります。

このレッスンでは、アプリ開始型ネットワーク トラフィックを最適化するための手法を適用して、バッテリー消費を削減する方法について説明します。

ネットワーク リクエストを一括処理するようにスケジュールを設定する

モバイル デバイスの場合、無線通信をオンにして接続を確立し、無線通信のウェイク状態を維持するプロセスによって、大量の電力が消費されます。そのため、個々のリクエストをランダムなタイミングで処理すると、膨大な量の電力が消費され、バッテリー寿命が削減されます。ネットワーク リクエストのセットをキューに登録して一括処理すると、効率化できます。この方法の場合、無線通信を 1 回だけオンにする消費電力だけで、アプリがリクエストするすべてのデータを取得できます。

ネットワーク アクセス スケジューラ API を使用してアプリデータ リクエストをキューに登録して処理すると、アプリの電力効率が大幅に向上します。スケジューラは、システムが処理する複数のリクエストをグループ化することで、バッテリーを節約します。また、他のリクエストがモバイルデータ通信をウェイクアップするまでリクエストを遅延させる、デバイスの充電が完了するまで待たせるなどにより、効率をさらに改善できます。スケジューラを使用すると、デバイス上のすべてのアプリを横断して、システムレベルでネットワーク リクエストの延期や一括処理を実行できるため、個々のアプリレベルで行う最適化よりもメリットがあります。

システムによる接続チェックを許可する

バッテリーを消耗させる極めて深刻かつ想定外の原因として、ユーザーが基地局やアクセス ポイントの範囲を超えて移動するケースがあります。このような状況で、デバイスを使用していないにもかかわらず、デバイスが温かくなっていることがよくあります。そして、気づくと、バッテリーが少なくなっている、もしくは切れていることがあります。

このシナリオの場合、アプリがバックグラウンド プロセスを実行し、定期的にモバイルデータ通信をウェイクアップして、モバイルデータ信号を検索したものの、結局、信号が見つからないことで問題が生じています。 モバイルデータ信号の検索は、極めて消費電力の多い処理の 1 つです。

アプリを利用しているユーザーにこのような問題が発生しないようにするには、バッテリー効率に優れた接続チェック方法を使用する必要があります。アプリ開始型ネットワーク リクエストの場合は、WorkManager を使用して、ネットワークが利用可能なときのみにジョブを実行するようにスケジュールを設定します。