3

Apple の Push Notification Service のようなプッシュ通知メカニズムでは、永続的な IP 接続を使用します。

私の質問は、永続的な接続を採用すると、デバイスのバッテリーと帯域幅がどのように節約されるのでしょうか? 接続が永続的であるため、デバイスは常に WiFi または 3G/LTE 無線を使用するという印象を受けます。

永続的な接続を使用すると、サーバーに変更がない場合にサーバーに変更を要求しないことで帯域幅を無駄にせず、代わりにサーバーがこれらの変更を「プッシュ」することを知っています。しかし、それがバッテリーと帯域幅をどのように維持するかはわかりません(サーバーへの常時接続があるため)。

同様の質問がここにあります:
Android C2DM は帯域幅の使用をどのように改善しますか?
しかし、答えは十分ではないと思います。

4

2 に答える 2

1

まず、ネットワーク通信による電力消費を制御するために、デバイスによって実装されるステート マシンを考慮する必要があります。 アダムが言ったように、接続の作成はバッテリーの寿命に非常に悪く、ポーリングは接続の作成/破棄に関するものであることがわかります

したがって、C2DM は、消費電力を改善するために接続を作成することを回避します。最終的に、節約は次の理由によるものです。

  1. 永続的な接続は、デバイスが常にフルパワー状態であることを意味するものではありません。これは、接続が閉じられておらず、サーバーがクライアントにメッセージを送信できることを意味するだけです。
  2. C2DM は、 GCM の高度なトピックで読むことができるように、さまざまなメカニズムでメッセージを配信します。したがって、デバイスがすでにフルパワー状態にある場合にのみメッセージを配信するように構成できます。
  3. 最後の要素は、GCM がアイドル状態のデバイスにメッセージを配信する方法です。公式ドキュメントではかなり不明確であり、Google Play Service のソース コードは公開されていないと思います。それにもかかわらず、次の回答でいくつかの手がかりを得ることができますここ. 最初の解説は役に立ちそうです。

よくわからない点があります。低レベルで接続を維持する方法がわかりません。それが私が見逃している作品です。説明については、 Android C2DMスライド 15 を参照してください。これらは、ステート マシンのある種の巧妙な処理を提供しているようです。

于 2014-07-21T09:48:35.200 に答える
0

バッテリーの寿命と帯域幅の使用を維持する方法は、少し間接的です. 節約は、デバイス上のすべてのアプリケーションが継続的に接続を作成/破棄し、帯域幅を継続的に使用するのではなく、1 つのサービスが永続的な接続を維持するという形でもたらされます。

たとえば、携帯電話に Facebook、Instagram、および Twitter のアプリがある場合、すべてを最新の状態に保つために、3 つのアプリでサーバーを継続的にポーリングして変更を確認します。

解決策は、1 つのサービスが着信接続をリッスンし、そのサービスが個々のアプリケーションに更新があることを通知するようにすることです。

于 2013-12-12T19:37:50.373 に答える