0

私の質問を読んでいるなら、私がこのアプリで大変な時間を過ごしてきたことを知っているでしょう。このアプリには、プッシュ サービス (ゼロから作成) とクラウド (ゼロから作成) が含まれています。Android は、このアプリがバッテリーの 55% を使用していると報告しています。ラジオは常に接続されているため、プッシュサーバーがラジオをスリープさせていないためだと思います。

私の質問は、ラジオがサーバーから何かを取得したときに、ラジオをスリープ状態にしてウェイクアップさせるにはどうすればよいですか? それは java.nio を使用しています - それは潜在的な問題ですか? 非同期のノンブロッキング機能が必要です。また、Google の Cloud Messaging Service も使用したくありません。

詳細: - 常に接続されている 1 つのソケットを常に使用しています。-クライアントはハートビートを送信しません(私が書いたものはありませんが、nioはそれ自体で送信する可能性があります)-サーバーは必要なときにのみ送信します(nioも使用します)

あなたが提供できる助けをありがとう!

編集:私が使用しているラジオは、利用可能なインターネット接続によって異なります。たとえば、ユーザーが Wi-Fi をオンにしており、Android がネットワークに接続している場合、Wi-Fi が使用されます。

4

1 に答える 1

0

私はそれを考え出した!ソケットのタグ付けと、消耗の可能性がある動作をコメントアウトすることで、バッテリーの消費がどこにあるのかを見つけました。私はいくつかの重いクライアントの最適化を行い、巨大なドレインがなくなりました. これは主に、あるべきではないときにソケットから常に読み取るための CPU の浪費でした。

于 2013-07-12T18:41:53.863 に答える