0

UI スレッドでいくつかのタスクを実行していて、ネットワーク処理を行うワーカー スレッドを作成しました。ただし、ワーカー スレッドが終了したら実行する必要がある重要なことがあります。誰かが私に解決策を提案してもらえますか?

{
    Main thread...
    worker thread created..and executed..
    //I need to wait here for the worker thread to finish//
    some useful task to be done
}

前もって感謝します!

4

2 に答える 2

3

ワーカーが終了した後、UI スレッドで何かをする必要がありますか? runOnUiThreadワーカーの最後で使用するか、 で使用しAsyncTaskますonPostExecute()。ワーカーの実行中に UI スレッドをブロックしても意味がありません。

于 2012-08-15T19:45:54.700 に答える
0

あなたはそうしない。UIスレッドをブロックすると、Androidのスレッド化の主要なルールに違反します。これを行うと、他の問題とともに、これらの迷惑な「アプリケーションが応答しません」ダイアログが発生する可能性があります。

開発者向けドキュメントの[プロセスとスレッド]ページから:

したがって、ワーカースレッドからUIを操作しないでください。UIスレッドからユーザーインターフェイスに対してすべての操作を行う必要があります。したがって、Androidのシングルスレッドモデルには2つのルールがあります。

UIスレッドをブロックしないでください

UIスレッドの外部からAndroidUIツールキットにアクセスしないでください

達成する必要があることに対する他の解決策を模索する必要があります。問題の詳細を指定する必要はありませんが、ワーカースレッドからアクティビティ内のメソッドを呼び出すだけで、ekholmのソリューションが機能する可能性があります。

于 2012-08-15T19:58:59.587 に答える