onExecute()는 UI쓰레드에서 돌아가나요?
RobotActivity사용시 디바이스의 ui갱신이 조금 이상한것 같아서...
왠지 onExecute()가 UI 쓰래드에서 돌아가는듯 해서 여쭤 봅니다.
ui단 처리하는 부분을 어씽크하게 하면 되긴 합니다만...
sdk단에서 onExecute()를 어씽크하게 처리하면 왠지 여러 사람이 편해질것 같아 조심스럽게 질문&건의 드립니다.
onExecute()호출 될때 마다 TextView에 호출된 숫자 찍도록 했었는데,
어버버버(?) 했거든요..
또 onExecute()가 호출한 다른 메서드도 ui처리를 똑바로 하지 못했습니다.
(ex)
int count = 0;
onExecute() {
count++;
//각종 구현...
txt.setText(count + ""); //매번 갱신 안됨
if( count == 100 ) anything(); //anything() 내에서 처리하는 ui가 갱신이 안됨
}
로봇 빌렷던 곳에 반납해서 테스트 해볼순 없고..
내일 공모전 로봇 받아오면 한번더 확인해보겠습니다.
txt가 텍스트 뷰인가요?
txt가 텍스트 뷰라면 위 예시대로 하면 안되구요
txt.setText 부분을 runOnUiThread로 감싸든지 메시지 처리 방식으로 하셔야 합니다.
onExecute는 UI 쓰레드가 아니라 다른 쓰레드에서 돌아가기 때문에 onExecute 함수 내에서는 UI 요소를 건드릴 수 없습니다.
혹시 앞서 말씀하신 어씽크하게... 라는 것이 onExecute 함수가 UI 쓰레드에서 돌아가기를 원하시는 것이라면
그렇게 할 수는 없습니다.
로봇 하드웨어와 관련된 데이터의 동기화 처리가 안되기 때문입니다.




UI 쓰레드와는 다른 쓰레드에서 돌아갑니다.
onExecute 내에서 TextView에 글자를 써보시면 알 수 있을 거예요.
디바이스의 UI 갱신이 어떻게 이상한지 알려주실 수 있나요?