0

C2DM インテントを処理する一般的な方法を誰か説明できますか?

インテリジェントなポーリングを行うアプリがあります。これは本質的にメッセージング アプリケーションです。サーバーをポーリングして、受信トレイに新しいメッセージがあるかどうかを確認します。アクティビティ UI と、控えめにポーリングするバックグラウンド サービスがあります。

ここで、ポーリングを補足するために、C2DM を含めました。おそらく、30 分間未読の受信トレイ コンテンツをプッシュするためです。

したがって、C2DM RECEIVE インテントを受け取ると、バックグラウンド サービスにポーリングするように指示しています。

これはどのように機能しますか?

C2DM の主な使用例は、「アイドル状態」の電話 (つまり、ポケットに入れ、画面をオフにする) だと思います。したがって、RECEIVE インテントを取得し、wake lock を取得し、バックグラウンド サービスを起動してポーリングします。インテントをバックグラウンド サービスに送信すると、wake lock が返されます。

バックグラウンド サービスはどのくらい存続しますか?

アンドロイドはすぐにそれを殺しませんか?

サーバー ping を 1 回実行してから終了する必要がありますか?

C2DM インテントを取得した後、どれだけの処理を実行できるかについて混乱しています。

4

1 に答える 1

0

あなたが提案しているアプローチは堅実に聞こえます。ポーリングを補足する方法として C2DM を使用することは、適切なアプローチです。C2DM 自体は 100% 信頼できるわけではなく (決してそうなるわけではありません)、設計によってそれを防ぐことができます。

サービスは、作業が完了するまで実行されます。ユーザーに通知を表示するか、メッセージ リストを更新すると思います。

指数バックオフの再試行を行うようにサービスを設定し、失敗する前に X 回試行します。失敗した場合は、次にポーリングが発生したときに最新の状態になります。バックグラウンド サービスが長時間試行されることは望ましくありません。これは、ポーリング コードが実行するためのものだからです。

OS がメモリを必要としない限り、サービスは続行されます。サービスを強制的にフォアグラウンド サービス (通知アイコン付き) にすることもできますが、それは必要ないと思います。

あなたのサービスは定期的にサービスをポーリングしていると思います。そのため、C2DM メッセージでサーバー要求を行う際の失敗を補うことができます。

于 2012-04-05T15:55:22.170 に答える