2012-01-20 19 views
-1

あなたはAndroidアプリケーションのUIスレッドに遅いコードを含めるべきではないと思っていますが、何が遅いのか、何が速いのかは分かりません。Android TCPクライアント&UIスレッド

私のアプリケーションには、外部サーバーへの永続的なTCPクライアント接続が含まれています。これまでは、関連するコードをセカンダリスレッドで実行するように設定することに深刻な努力を払っておらず、十分に機能しているようです。

Androidアプリケーションがユーザーと外部のTCPサーバーと同時に対話する方法について誰かが強い感情を持っていますか?

おかげで、ネットワーク上の R.

+0

ネットワーク関連のコードを別のスレッドで実行しないようにすると、問題が発生することがあります。それはすべてこれに当てはまります:ネットワークが飽和しているか、通信に時間がかかっていたために、あなたのアプリが(ユーザの視点から)大丈夫ですか?あなたが今努力することに煩わされることができなかったら、これは後でサポート要求/低評価などで表示されることを考慮してください。 –

+0

非常に良い点です。私はその行動を見ていない。ああ、問題があるのを見ているだけで、フリーズや強制終了はしません...また、別のスレッドで実行するようにTCPクライアントコードを変換したとき(私は認めます)、役に立たなくなってしまいましたあなたはAndroid用のTCPクライアントの例を教えてもらえますか? – Rich

+0

あなたのネットワークコードを 'AsyncTask'に移動してください。それは実装するのが非常に簡単であり、SOにはたくさんの例があります。私はAsyncTaskに関するかなりの質問にも答えました。ここではあなたが行くためのAndroidの[Painless Threading](http://developer.android.com/resources/articles/painless-threading.html)の記事があります。それを試してみて、問題に遭遇した場合は、新しい質問を開始し、タイムリーな回答がない場合は私にpingしてください。がんばろう! –

答えて

0

Android(または他のプラットフォーム)では、メインスレッドはUIスレッドです。これは、ユーザーがアプリケーションを使用している間、常に良好な応答性を期待するためです。時間がかかるタスクでこのスレッドをオーバーロードすると、そのアプリがフリーズしたことがユーザーに表示されます。これはすべての設計ガイドラインに違反しているので、ネットワーク接続をメインスレッドから分離してください。

+0

Wowをダウンロードできるもう1つの素晴らしい例http://kikudjiro.posterous.com/android-tcp-client-exampleが含まれています。 3つの本質的に同じ答え... 私は販売されている、私はそれを動作させる方法を見つけていない。誰かが、Android用のいくつかのTCPクライアントコードの例をリードしていますか? – Rich

0

ものは絶対にバックグラウンドスレッドにする必要があります。

Inoidの主なスレッドでネットワークにアクセスしようとすると、Inform devチームが非常に強く感じてハニカムから始まり、例外がスローされます。

ネットワーク接続の速度と信頼性は、ネットワークのUIスレッドを処理することによって制御できません。また、アプリケーションの速度/信頼性/応答性を制御できます。そして、それは必ずしも貧弱なユーザーエクスペリエンスにつながるわけではありませんが、時にはそれは時々ですそして、時にはそれが起こらないように十分なIMOです。

+0

うわー。 3つの本質的に同じ答え... 私は売れた、私はそれを動作させる方法を見つけていない。誰かが、Android用のいくつかのTCPクライアントコードの例をリードしていますか? – Rich

+1

この質問に対する答えは、既にあなたのためにAsyncTaskに入れられている素晴らしい例です。 http://stackoverflow.com/questions/5855775/android-tcp-clientまた、このページには、 – FoamyGuy

0

これは単に動作しません。 Android 3.0以降、メインスレッド上でのネットワーク操作は厳格なモード違反が強制されているだけで、スローされ、例外になります。asynctasksとローダについてもっとよく知ってください。

+0

うわー。 3つの本質的に同じ答え... 私は売れた、私はそれを動作させる方法を見つけていない。誰かが、Android用のいくつかのTCPクライアントコードの例をリードしていますか? – Rich

+0

これはどこにでもありますが、私がすでに言及したように、AsyncTaskとLoaderについては、http://android-developers.blogspot.com/2011/09/androids-http-clients.htmlを試してみてください。 –

関連する問題