2017-08-05 20 views
-3

スレッドについてたくさん読んでいますが、まだ理解していません:(私がスレッドについて学んだことを説明しましょう。私たちがrunOnUiThreadを呼び出すと何が起こるのでしょうか?そして私の他の質問は、新しいスレッドを使用する時間なのでしょうか?つまり、私たちが別のスレッドで作業しているか、新しいスレッド?。スレッドについてはとても混乱しています

私のおかげで、ジョンを助けてください、私は、これは不明で質問です知っているが、私は同様に理解していない親指の

+0

質問が完全に不明です。詳細については、以下のリンクを参照してください。 https://stackoverflow.com/questions/2857184/when-should-i-use-threads –

答えて

1

お答えします。実際にAndroidにはメインスレッド(UIスレッドとも呼ばれます)と他のスレッドがあります。

メインスレッドは、UIを示すために、基本的であり、他のスレッドは、そのようなあなたがメインスレッドに他のスレッドから移動したいとき

runOnUiThreadが呼び出されるなど、サーバーへの接続など他の大きなプロセスを処理するためです。メインスレッドのみがUI上で結果を表示/表示できるので必要です。だから、あなたが他のスレッドでいくつかの処理を行ったときに、アプリケーションに結果を表示したい場合は、runOnUiThreadを呼び出してメインスレッドに表示する必要があります。

サーバーからデータを取得したり、データをロードするなどのプロセスが大規模で時間がかかる場合にのみ、他のスレッドで作業します。また、UI結果を表示したいときはいつでも他のスレッドからメインスレッドに移動します。

+1

このように、メインスレッドは** UI **スレッドと呼ばれることもあります。それは[docs](https://developer.android.com/guide/components/processes-and-threads.html)の言うことです。 – Enzokie

+0

@Enzokieああ、指摘してくれてありがとう – Kharda

-1

一つの一般的なルールは次のとおりです。あなたが必要としない場合は、マルチスレッドを使用しないでくださいマルチスレッドは常にエラーを起こしやすく、多くの場合、それは何のメリットもありません。基本的には、長い時間の操作(画像処理のような広範な計算)を実行するたびに新しいスレッドを開始し、メインスレッドをしばらくブロックするので、アプリケーションが応答しなくなります。

+1

それはまったく真実ではありません。どのようにアンドロイドでマルチスレッドを使用し、効率的なアプリケーションを持っていない?並行性を避けることは、使用が困難になる可能性があるため、良い習慣ではありません。 –

+0

これは私の言うことではありません。私のポイントは、並行処理の利点がない場合は、マルチスレッドを避けるべきだということでした。マルチスレッドは常に良いことであるというのはよくある誤解です。並列化が可能なもの、すなわち、デバイスが待機状態になるのを待つ、または長時間のデータ処理のように、互いに独立した2つ以上の計算がある場合には、これは良いことです。 – SBS

0

最も簡単な方法は、AsyncTask<>クラスを使用することです。あなたは3つの関数をオーバーライドする必要があります。

  1. doInBackGround(...):バックグラウンドスレッドで実行されるコードです。
  2. onPreExecute(..):プログレスバーを表示するように実行するバックグラウンドスレッド が完了する前に実行されますコードなど
  3. onPostExecute(...):コードバックグラウンドスレッド の実行が完了した後に実行されます。ここでUIを更新するなどのタスクを実行
関連する問題