Android 새로운 스레드를 이용하여 UI를 변경시 에러 발생시 :: 게임제작[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

게임제작
[1]
등록일:2018-08-01 20:36:36 (0%)
작성자:
제목:Android 새로운 스레드를 이용하여 UI를 변경시 에러 발생시

이번에 스타펫 위젯에 퍼트리기 기능을 추가 하였다.

트위터와 페이스북을 추가 했는데.

퍼트리기를 하고나면 해당 레어펫을 바로 사용할 수 있도록 만들었다.


트위터와 페이스북 모두 API가 잘 만들어저 있어서

인증 및 글쓰기 등은 그렇게 어렵지 않게 진행할 수 있었다.


사실 기능이 다 완료되고 내폰(갤럭시 넥서스)에서는 모든 기능이 잘 동작하였다.


다 완료되었다고 생각하고 배포판을 만들었는데..

아 이런... ICS에서는 잘 동작하는데..

그 아래 버전에서는 다음과 같은 에러가 나는 것이었다.


Only the original thread that created a view hierarchy can touch its views.


아이 정말 ㅠㅠ


그래서 찾아보니 아래와 같은 글들이 있었다.


참고자료

요청 : http://www.androidpub.com/32805

응답 : http://binsolb.tistory.com/entry/CalledFromWrongThreadException

감사합니다.


원인은 트위터 API에서 새로운 스레드를 이용하여 UI를 변경시키려 해서 발생하는 것 이었다.

그런데 ICS에서는 동적으로 변경하는 부분에 대해서 해결이 된 것인지 이상없이 동작을 하였고 하위버전에서 문제가 발생하는 것이었다. (역시 테스트 잘 하고 올려야 한다.)


위에 참고 글들을 보면 되겠지만 간단하게 적어본다면

아래와 같이 핸들러를 만들어서 해결 할 수있다.



1. 내가 동적으로 UI를 변경하려 했던 부분을 아래와 같은 코드로 변경한다.

new Thread()

{

public void run()

{

Message msg = handler.obtainMessage();

handler.sendMessage(msg);

}

}.start();


2. 핸들러를 만든다.

final Handler handler = new Handler()

{

public void handleMessage(Message msg)

{

// 원래 하고싶었던 일들 (UI변경작업 등...)

}

};


[본문링크] Android 새로운 스레드를 이용하여 UI를 변경시 에러 발생시
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34774
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.