0

最初に私の問題を説明させてください。バイトストリームに基づくカスタムプロトコルで tcp-ip ソケット接続を使用するサーバーを持っています。もちろん、Androidアプリであるクライアントもプロトコルを実装しています。ただし、どちらも、他のピアからの読み取りと書き込みの両方の方法で通信する必要があります。サーバー上では問題ありませんでしたが、Android クライアントが私の頭をつぶします。私が欲しいのは基本的に、Androidクライアントがアプリの起動時にサーバーとのtcp接続を確立し、すべてのアクティビティでそれを(再)使用してデータを送受信する方法です。

私はこれを読みました: Android TCP接続のベストプラクティス と、もちろん、サービスとシングルトンをいつ使用するかについての議論。AndroidのFacebookアプリのようなアプリがどのようにそのようなことを行うのかはまだわかりません。単純なバイトストリーム tcp 接続の代わりに REST を使用することもできますが、アプリを開くとデータの受信が開始され、終了したデータ (ニュースストリームの可能性があります) がレンダリングされて表示されます。AsyncTasks のようですね。

だから私の質問は...:

  1. そのようなアプリはどのように見えるでしょうか? - この通信方法を実現するにはどうすればよいですか (AsyncTasks を使用するか、別のスレッドとして使用しますか?)。では、すべてのアクティビティに 1 つ以上の AsyncTask を実装する必要がありますか? - この場合、すべての AsyncTask が Socket とそのストリームをシングルトンから使用するようにします。それは可能ですか?

  2. このトピックの良いサンプル プロジェクトはありますか?

事前に助けてくれてありがとう!

4

2 に答える 2

0

私が通常行うことは、サービスを使用して実際の要求を実行し、その情報をデータベースに配置することです。アクティビティでは、カーソルを使用して必要なデータを表示するため、データベースが更新されるとアクティビティが自動的に更新されます。

これは、最初の Twitter アプリがどのように作成されたかに関するio 2010 のプレゼンテーションです。

ボレーがあなたのケースで機能するかどうかはわかりませんが、見てみる必要があります。Volleyに関するio 2013プレゼンテーションがあります

于 2013-06-26T15:50:45.143 に答える
0

私は最近このトピックに取り組んでいました.あなたとほとんど同じユースケースを持っていました.1つの違いがあります.複数の同時TCPソケット接続を実装しました.

私の意見では、AsyncTask は有効なオプションではありません。画像フォルダや大きなファイルなどの固定サイズのデータ​​ コレクションを転送したい場合に、現在の進行状況をユーザーに最新の状態に保ちながら、利点があります。柔軟なコミュニケーションのために、スレッドを使用する方が簡単です。

複数のアクティビティで「ConnectionThreads」を再利用可能にする適切な方法は、「ConnectionService」です。あなたのアクティビティは、このサービスにサブスクライブし 、サーバーへの接続を開くように依頼できます。接続すると、アクティビティが一時停止/破棄されても、サービスは接続を維持します。

于 2013-06-26T15:14:37.827 に答える