定期的な更新による影響を最小限に抑える

定期的な更新の最適な頻度は、デバイスの状態や、ネットワーク接続状況、ユーザーの行動、明示的なユーザー設定によって異なります。

バッテリー寿命を最適化するでは、バッテリー効率にぐれたアプリを作成し、ホストデバイスの状態に基づいて更新頻度を変更する方法について説明しています。たとえば、接続が失われたときはバックグラウンド サービスの更新を無効にし、バッテリー残量が少ないときは更新頻度を減らします。

このレッスンでは、基盤となる無線通信ステートマシンに対するバックグラウンド更新の影響を可能な限り低減するには、更新頻度をどのように変更すればよいかを検討します。

ポーリングの代わりに Firebase Cloud Messaging を使用する

アプリがサーバーにポーリングして更新が必要かどうかを確認するたびに、通常の 3G 接続では最大 20 秒間、無線通信を行うため、電力を不必要に消費しています。

Firebase Cloud Messaging(FCM)は、サーバーから特定のアプリ インスタンスにデータを送信する際に使用できる軽量なメカニズムです。FCM を使用すると、サーバーは、特定のデバイス上で稼働しているアプリに対して、利用可能な新しいデータがあることを通知できます。

ポーリングの場合、アプリが定期的にサーバーに ping を送信して、新しいデータがないか問い合わせる必要があります。それに対し、イベント ドリブン モデルの FCM では、ダウンロードするデータがあることをアプリが認識している場合に限り、新しい接続を確立できます。このモデルでは、不要な接続を最小限に抑えるとともに、アプリ内の情報を更新するまでの時間を短縮します。

FCM は永続的な TCP/IP 接続を使用して実装されます。独自のプッシュ サービスを実装することも可能ですが、FCM を使用することをおすすめします。これにより、永続的な接続の数が最小限に抑えられ、プラットフォームは帯域幅を最適化し、バッテリー寿命に対する影響を最小限に抑えることができます。

ネットワーク スケジュール設定ツール

アプリがポーリングを必要とする場合、Android プラットフォームには、ポーリングなどのネットワーク タスクを対象に、効率的なスケジュールを設定するのに役立つさまざまなツールが用意されています。ツールの使用方法については、バックグラウンド処理ガイドをご覧ください。