2011-08-08 7 views
3

私はサーバーと通信するアプリケーションを持っています。私は、NEW DATAがフェッチするために利用可能なときに、自分のアプリケーションにソケットの入力ストリームのみを読み込ませたい。新しいデータがAndroidに到着した場合にソケットからデータを読み込みます。

現在、私は、java.nio.channelsのSocketChannelクラスを使用してソケットの入力ストリームを20msごと(ポーリング)読み込む予定のタイマーを作成します。利用可能なデータがなくてもソケットを読み終えるので、これはあまり良いことではありません。そして、バッテリーを素早く排水します。

新しいデータが利用可能になるたびに、入力ストリームを読み取る唯一の時間なので、接続されたクライアントにフラグを送信または送信するAndroid用APIはありますか?

答えて

2

thisを参照してください。しかし、短い答えはいいえ、このためのAPIはありません。ところで、SocketChannel/Selectorは、データが利用できない場合、実際にソケットを読み取ることはありません。ちょうどその状態を確認してください。

プッシュ通知の場合は、Android Cloud to Device Messaging Frameworkをチェックしてください。 AFIAKも同様の方法で実装されています。ソケットを開いたままにしておき、利用可能な場合は通知を に送信します。これはおそらくすでにバッテリーの使用量が少なくなっているため、OSの一部なので、試してみる価値があるかもしれません(2.2以上)。