0

メッセージ サーバーに対して開いているソケット接続を保持する Android アプリケーションを開発しています。独自のスレッドを生成し、接続を処理/接続を維持するランナブルのセットがあります。これらはフォアグラウンド サービスから呼び出されます。フォアグラウンド サービスは、すべてのメッセージ処理/ビジネス ロジックを処理します。これはそれほど複雑ではありません。XML の操作、SQLite DB のトロールが含まれます。アクティビティは薄くて愚かで、すべてをフォアグラウンド サービスに渡します。

私は Mindtherobot.com のチュートリアルを見ていました。このチュートリアルでは、Twitter API を定期的にポーリングし、そのデータをアクティビティに渡すバックグラウンド サービスを使用して、基本的な Twitter クライアントを構築する方法を詳しく説明しています。(マルウェアが蔓延している/有害であるとGoogle atmに表示されているため、実際のリンクを投稿したくありません)。そのために、リモート サービスを使用します。

リモート サービスを使用するということは、バインディングを使用するだけでなく、AIDL に触れて IPC を処理することを意味します。

私が確信していないのは、これを行う必要があるということです。私のサービスはサードパーティのアプリケーションでは使用されません。私が読んだ限りでは、厳密に必要でない限りリモート サービスを使用することは嫌われています (オーバーヘッドが 2 倍になるため)。

将来的には、フォアグラウンド サービスからの通知を表示するウィジェットを追加したいと思うかもしれません。

4

1 に答える 1

0

このための標準的なパターンは、次を使用することです。

  • 定期的なインテントを起動するハンドラ
  • 上記のインテントをリッスンする BroadcastReceiver。ウェイクアップすると、サーバーをポーリングし、新しいデータを保存します
  • アクティビティにデータを提供する ContentProvider

定期的なインテントを頻繁に起動しないように注意してください。そうしないと、バッテリーが消耗します。

代わりに、C2DM 経由でデータをプッシュするサーバーを作成することもできます。

于 2012-04-26T13:28:44.233 に答える