2013-11-15 4 views
0

본질적으로 네트워크에서 여러 리소스를 얻기 위해 여러 스레드를 시작하는 활동이 있습니다. ResultReceiver 메커니즘을 사용하여 이러한 스레드로부터 알림을받은 후 UI를 업데이트합니다. 코드 조각은, 아래와 같이다중 스레드 환경에서 Android ResultReceiver

public void onReceiveResult(int resultCode, Bundle resultData){ 

    switch(resultCode){ 

    case 1: updateData1(); 
     break; 

    case 2: updateData2(); 
     break; 

    case 3: updateData3(); 
     break; 
} 

으로, 나는 방법은 동기화 onReceiveResult 만들 수있는 좋은 생각이 될 것입니다 생각이 스레드에서 알림을 수신에 UI 요소를 업데이트의 메인 스레드를 보인다. 다른하실 말씀 있나요? 효율성과 안전성을 유지하기 위해주의해야 할 다른 것이 있습니까?

+2

데이터는 이미 마샬링되어 UI 스레드에 신호됩니다. 'onReceiveResult'는 ResultReceiver 메커니즘에 의해 다른 스레드로부터 직접 입력되지 않습니다 - 호출은 직렬화됩니다. Synchro는 명시 적으로 다른 스레드에서 핸들러를 호출하는 경우에만 필요합니다. –

답변

0

아니요, 도움이되지 않으며 스레드를 차단합니다. UI 스레드에서 UI를 수정할 코드를 실행하십시오. 그렇지 않으면이 onReceiveResult가 호출되는 위치에 따라 문제가 발생합니다 ...

관련 문제