in android

Twitterクライアントと電池消費量

Twitterクライアントの電池消費はどこで発生するのかって話です。
あのクライアントは電池消費が少ないとか、このクライアントは電池消費が多いとかよくそんな話を耳にしますが、じゃあどんなことが電池消費に影響するのかを書いていきたいと思います。

1.画面のバックライト

どのtwitterクライアントでもある電池消費です。画面を点けていれば点けているだけ、TLを眺めていれば眺めているだけ電池消費が多くなります。
これは、クライアントで画面輝度の制御をしていない限りどのクライアントでも平等に消費する項目かと思います。
実際、Twitterクライアントでの電池消費はほとんどがバックライトです。

2.Twitter APIへの接続方法

Twitterクライアントの接続方法にはrestAPI、StreamingAPIと2種類の方法があります。

restAPI
restAPIは、手動もしくは定期的にサーバと通信してTLなどの情報を取得する方法です。
restAPIを利用した代表的なクライアントとしてTwitter for android(公式),twiccaなどが挙げられます。
また、restAPIの特徴としてリアルタイム性に欠けることが挙げられます。手動、又は定期的に更新した時、現状のTLと最新の情報の差分を取得するため、常に最新の状態ではありません。
必要に応じて通信をするため、通信量が少なく電池消費はそこまで多くはなりません。

streamingAPI
streamingAPIは、サーバと接続したら通信しっぱなしで常に最新の情報を取得できる特徴があります。
streamingAPIを利用したクライアントとしては、ツイやつγ、ShootingStar、はむーんなど、他にも沢山あります。
1度サーバと接続したら常に通信しっぱなしで電池消費は多めです。

3.アイコンなどの画像処理

アイコンなどの取得でも通信が発生します。特にTwitterクライアントではTLのアイコンの取得の為に通信が多くなります。
そのため大概のクライアントではアイコンの取得の為の通信を減らすためにアイコンなどの画像をキャッシュ(端末で保持)して再度画像を取得しようとした時、
キャッシュより画像を取得して通信を発生させないような機構があります。
また、このキャッシュにはメモリー上で画像をキャッシュしたり、ファイルシステム上でキャッシュしたりなど様々な方法があります。
このキャッシュの有無や、キャッシュする最大容量の設定などで画像の取得の為の通信の頻度で電池消費量が変わってきます。

4.通知

通知には、restAPIで通知する方法、streamingAPIで通知する方法、サーバで変化を監視してサーバより変化の情報を送る方法(push通知)などがあります。

restAPIで通知
restAPIを利用して定期的に バックグラウンドで通信を発生させて変化を監視し、変化があった場合通信をする方法です。
これは、定期的な通信が必要で電池消費もそれなりに多くなります。またTwitterAPI1.1では接続制限がかなり絞られている為(15分間に15回)、それほど速い間隔で変化を監視することは出来ません。

streamingAPIで通知
streamingAPIではAPIと通信をしたらしっぱなしで、常に最新の変化を取得することが出来ます。そこで、バックグラウンドでストリーミング接続を維持して通知をします。
この方法では常に通信を維持している為電池消費はとても激しいです。

push通知
push通知はサーバより通知が送られてきてその情報を元に通知をするもので、基本的にtwitter公式クライアントに限られた機能になります。
push通知では通知が必要な都度サーバから情報が送られてくるため、余計な通信が一切ないことです。
このため電池消費はほんの少しで一番最適な方法です。しかし、大体の非公式クライアントはpush通知を使うことは出来ません。

5.内部処理いろいろ

内部処理はクライアントにより様々です。ただ、結果が同じ処理でも余計なな処理をしていればその分CPUを使うので無駄な電池消費につながります。

画面使いすぎじゃないか?
どのAPIを使っているか?
画像のキャッシュはあるのか?
キャッシュサイズはどれくらいか?
通知はどの方法を使っているか?
以上がTwitterクライアントのの電池消費の原因になります。

最後にTwitterをしたければ電池消費を気にせず使いやすいクライアントを使いましょう。
電池消費なんてモバイルバッテリーでも使えばどうでも良くなります。

twitterしたけりゃモバブを持て!


Related Posts

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image