마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 내부에서 ui 변경시..

0 추천

doInBackground내부에서 다이얼로그의 텍스트를 바꾸기 위해 

아래와 같은 코드를 추가했습니다.

runOnUiThread(new Runnable() {

@Override

public void run() {

mDlg.setMessage("카운트다운" + "(" + Count + "/" + Total + ")");

}

});

카운트다운(1/3)

이런식으로 출력을 하는데..

아주 간혹 Only the original thread that created a view hierarchy can touch its views.

에러가 발생합니다.

메인스레드가 아닌 곳에서 ui 변경을 할 경우 발생하는 에러라는 건 알겠는데,

thread안에서 setMessage했는데도 에러가 발생하네요..

doInBackground안에서 사용한 이유는, doInBackground에서

 for문으로 params배열값 만큼 반복하기 때문에 count값을 변경하고자 한것이구요..

mDlg(다이얼로그)도 AsyncTask내부에서 사용하는 다이얼로그입니다.

아님 따로 핸들러를 사용해야 할까요?

망고사탕 (5,000 포인트) 님이 2017년 9월 19일 질문

1개의 답변

0 추천
 
채택된 답변

doInBackground 안에서 UI를 변경하려고 해서 나는 이슈입니다.

onProgressUpdate를 오버라이드 하셔서 여기서 count값을 변경해주시면 될 것 같네요.

샘플은 검색하시면 많이 나오니 참조하시면 될 것 같습니다.

마인드진 (920 포인트) 님이 2017년 9월 19일 답변
망고사탕님이 2017년 9월 19일 채택됨
...