2016-08-17 9 views
0

以外のスレッドからのビューを操作することは推奨されていない私は、Androidの新機能とマルチスレッドプログラミングだと私はそのAndroid.developersのドキュメントを読み込む:それはないですアンドロイド:なぜそれがUIスレッド

UIThread以外のスレッドからビューを操作することをお勧めします。

いいえ私はルールを受け入れましたが、なぜ今は理解したいですか?誰でも簡単な例がわかりました。あなたの助けを事前に

おかげで

+1

UIThreadが図面にinchargeであり、それはすべての12で画面に描画するものにいくつかのスケジュールを次のので、レースの条件 – Shaishav

+0

を避けるために - 16ミリ秒はそう他のスレッドとのビジネスはそのスケジュールを台無しにする可能性があります。また、UIが破棄され、別のスレッドのビューをいくつか呼び出すと、UIがすでに破棄されているため、nullpointer例外が発生する可能性があります。 * yo late men。 ;)* – Enzokie

答えて

1

としては、競合状態を避けるために、コメントで述べたことの一部です。その悪い練習のちょうど少しでも。 UIスレッドはUIの問題を処理する必要があります。それはそのためのものです。他のスレッドは他のスレッドを処理する必要があります。

いくつかのリモートクエリに基づいてTextViewを変更するクラスがあるとします。このためには、AsyncTaskのようなUIスレッドへのコールバックを使用する必要があります。

複数のスレッドが同じUIコンポーネントで動作しているインスタンスが存在する場合、「間違った」(意図しない)ものが最初に終了することがあります。これは競合状態です。

また、良いプログラミングは、懸念の分離を促します。あなたは、アーティストが作業している絵にマネージャーを従事させることはありません。なぜ、この行動をソフトウェアで模倣するのでしょうか?

-1
  1. 結論は次のとおりです。UIは常に応答する必要があります。したがって、 の操作で、ユーザーが気付くのに十分な時間がかかる場合は、 をUIスレッドで実行しないことを検討するとよいでしょう。一部の の例は、ネットワークIOとデータベースアクセスです。これは、しかし、ケース・バイ・ケースの何か ですので、あなたは少し

  2. スレッドが更新から UIをブロックする長時間実行プロセスで使用されなければならない自分 のための呼び出しを行う必要があります。は、それをバックグラウンドスレッドに入れて、ユーザにダイアログまたはスピナーなどで を通知したい場合があります。 のUIスレッドを5秒以上ロックすると、OSによってkillまたはwait オプションが表示されます。

+0

申し訳ありませんが、OPの質問には答えていません。彼は「なぜUIThread以外のスレッドからのビューを操作することは推奨されないのですか?」と尋ねています。スレッドの利点ではありません。 – Enzokie

+0

私の答えは、上記の質問を考慮して、スレッドからUIを簡単に更新して、人々が理解できるようにします。あなたにとって役立たず、何か他のものを探しているかもしれません。他人にコメントするのではなく、適切かつより良い答えを与えてください。 – Kumar

+0

OPが言ったことを読んでください: 'OK私はルールを受け入れましたが、今なぜ私は理解したいですか?その文構造に基づいて私は彼/彼女がスレッドの利点を認識していることがわかりますが、彼の質問は使用されているスレッドとおそらく混乱がある場所に対抗しています。ところで私は既に上記の質問に答えました。 – Enzokie

関連する問題