2010-07-20 4 views
3

저는 비동기 모드에서 Twitter4j를 사용하고 있습니다. 리스너에서 응답을 받으면 내 활동에서 일부보기를 변경할 수 있지만 결과는 CalledFromWrongThreadException입니다.다른 스레드에서 Android보기에 우아하게 액세스하는 방법은 무엇입니까?

나는 runOnUiThread 메소드를 사용할 수 있다는 것을 알고 있지만, Runnable 클래스를 인라이닝하는 것과 별도로 가장 좋은 해결책은 무엇입니까? 내 활동의

부 : 나는 Activity.runOnUiThread(Runnable) 또는 View.post(Runnable)보다 더 "우아한"해결책이 있다고 생각하지 않습니다

TwitterListener listener = new TwitterAdapter() { 

     @Override 
     public void gotUserDetail(User user) { 
      super.gotUserDetail(user); 

      fillInUserProfileDetails(user); 

답변

3

. 당신은 아마 이미 안드로이드 문서에서 스레딩의 토론을 본 적이 :

편집 : 거기에 언급 한 바와 같이 http://android-developers.blogspot.com/2009/05/painless-threading.html

은 안드로이드 UI 툴킷이 스레드 안전하지 않습니다, 그래서 모든 상호 작용이 발생한다 같은 스레드, 즉 응용 프로그램의 UI 스레드. 한 스레드에서 다른 스레드로 작업을 전달하려는 경우 수행 할 작업을 캡슐화하기 위해 Runnable 객체가 필요합니다.

나는 익명의 내부 클래스가 다소 엉망으로 보일 수 있지만 언어에서는 closures에 가장 가깝기 때문에 자바에서는 꽤 일반적인 관용구임을 알고있다. 그래서 당신이 할 수있는 최선의 일은 IMO입니다, 당신의이를 치고 Activity.runOnUiThread(Runnable)을 사용하고, 우아함이 프로그래머의 눈에 있음을 상기 시키십시오.

관련 문제