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

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

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


트위터와 페이스북 모두 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변경작업 등...)

}

};


크 안드로이드 책 한권 사서 봐야지...

그래도 역시 자바기반이고 뭔가 J2EE와 비슷한 아키텍처를 가지고 있어서 쉽게 적응 가능하다.

재미있는 안드로이드 프로그래밍 이지만... 기종별 테스트 잘 해야겠다;;;