2017-04-08 1 views
-1

こんにちはみんなは、私はアンドロイドのスタジオで使用されているAsyntaskについて質問があります。たとえば、インターネットからファイルをダウンロードするなど、UIスレッドで直接実行する操作を長時間実行すると、アプリケーションのユーザーインターフェイスは、対応するタスクが終了するまで「フリーズ」します。MySQLを使用するときにAsyncTaskを使用する必要がありますか?私の知る限りAynTaskは、1つのスレッド、いわゆるUIスレッドを介してユーザ・インターフェースのために使用されている知っているよう</p> <p>:

私はログインできるようにアカウントを登録したいと思っています。時間がかからないので、なぜAsyntaskを使うべきですか?

データベースに100個の文字列を送信したいとします。それは私が思うにミリ秒で行うことができます。なぜ、再び使用するのか、またどのようにAsyntaskを使用するのかを決めるのですか?

私はあなたが私を助けてくれることを願っています、私は長い間探してきました!

+0

いいえ、必要はありません。ネットワーク操作の実行や大きなデータセットの照会などが必要な場合にのみ使用してください。たとえば、ユーザー登録の場合、インターネット接続が遅すぎて登録を実行できないため、あまり時間がかからないことを保証することはできません –

+0

返信いただきありがとうございます! – muyat

答えて

0

操作に要する時間がわからない場合は、別のスレッドで実行し、その結果をUIスレッドに渡す必要があります。私は、データベースは別のスレッドだけでなくHTTPリクエストにもアクセスする必要があると思います。時間がかかるクエリの場合は、長い操作である可能性があります。 AsyncTaskはそれを行う1つの方法です。他のテクニックも使用できます。最近使用されている一般的な手法は、RxJavaライブラリを適用することです。このライブラリは、いくつかの追加機能を備えたマルチスレッドアプリケーションを作成するための高水準機能のリアクティブインタフェースを提供します。たとえば、次のような操作を実行できます。 Sechdulers.io()(I/O)スレッドを呼び出し、その結果をUIスレッドであるAndroidSchedulers.mainThread()に渡します。

もAndroidのSDKからLooper & Handlerを使用したり、JavaからThreadクラスを使用してのような他の技術があるが、このような技術は、あなたがに対処するためのより多くの問題を抱えている多くの定型コード&を書いて、より多くの知識、多くの作業が必要です。

+0

あなたの返信ありがとう! – muyat

関連する問題

 関連する問題