2012-07-23 2 views
0

실행중인 스레드가있는 Java 클래스에 내 주 활동을 전달하려고합니다. 스레드가 호출 될 때 일부 작업을 수행하고 UI를 업데이트하는 내 액티비티 클래스에서 일부 개체를 참조해야합니다. 내 코드는 다음과 같습니다.Android : 실행중인 스레드에서 잘못된보기 예외가있는 Java 클래스로 전달

내가 이렇게하면 올바른 스레드에서보기를 업데이트하지 않는다는 오류가 발생합니다. android.View.ViewRoot $ CalledFromWrongThreadException. 여기서 내가 뭘 잘못하고 있니? 또한이 코드는 다른 모든 로직을 제거해야하기 때문에 유사 코드를 컴파일하지 않을 가능성이 큽니다.

+0

(http://developer.android.com/reference/android/os/Handler.html) [이 기사에서는 몇 가지 좋은 예를 볼 수 있습니다.] (http://www.vogella.com/articles/AndroidPerformance/article.html) – FoamyGuy

답변

1

내가이 문제를 이해한다면, 다른 각도에서 작업하는 것이 좋습니다.

절대 활동 수업을 통과해서는 안됩니다. 액티비티 클래스는 컨트롤러입니다.

그래서 개체와 데이터를 백그라운드 스레드에 전달합니다. Main UI가 호출되면 UI는 스레드에서이 객체를 다시 묻고 UI를 업데이트합니다.

정규베이스에서 발생 시키려면 스레드에 리스너를 구현해야합니다. 그러면 메인 스레드가 데이터를 업데이트 할 때 알림을받을 수 있습니다.

마지막으로 좋은 오래된 관찰자 패턴을 사용하는 것이지만, 나는 그 패턴을 사용하고 싶지 않습니다.

편집 : AsyncTask를 한 번 봐 보자 AsyncTask Android example

당신은 [AsyncTask를 (http://developer.android.com/reference/android/os/AsyncTask.html) 또는 [처리기]를 사용한다
관련 문제