0

ネットワークから複数のリソースを取得するために、本質的に複数のスレッドを開始するアクティビティがあります。ResultReceiver メカニズムを使用してこれらのスレッドからの通知を受信した後、UI を更新します。コード スニペットは次のようになります。

public void onReceiveResult(int resultCode, Bundle resultData){

    switch(resultCode){

    case 1: updateData1();
        break;

    case 2: updateData2();
        break;

    case 3: updateData3();
        break;
}

これらのスレッドからの通知の受信時に UI 要素を更新するのはメイン スレッドであるため、メソッド onReceiveResult を同期させることをお勧めします。コメントはありますか?効率的かつ安全に保つために注意すべきことは他にありますか?

4

1 に答える 1

0

いいえ、これは役に立たず、スレッドをブロックします。代わりに、UI スレッドで UI を変更するコードを実行します。そうしないと、この onReceiveResult が呼び出される場所に応じて問題が発生します...

activity.runOnUiThread(new Runnable() {

           @Override
           public void run() {
               updateData1();
           }
});
于 2013-11-15T11:47:14.887 に答える