클래스를 생성 했으므로 특정 스레드 (예 : ui-thread)에서만 호출 할 수있는 메소드를 원합니다. 안드로이드 네트워킹 API에서 발생하는 것과 정확히 반대입니다 ... UI 스레드에서 호출 될 때 예외가 발생합니다. 어떻게하면 안드로이드에서 할 수 있습니까? thanxui 스레드에서 클래스 메서드를 호출하도록 강요합니다.
1
A
답변
-3
글쎄, 수업 중에도 할 수 있습니다. 발신자 활동의 컨텍스트를 얻으십시오. 그리고 메서드에서 do context.runOnUIThread()
1
이 코드를 클래스 메서드 안에 넣습니다. MFC의 작동 방식을
if(!"UI thread".equals(Thread.currentThread().getName())){
throw new IllegalStateException("wrong thread running this class, thread name:"+Thread.currentThread().getName());
}
+0
고맙습니다! 그 코드는 매우 유망 해 보입니다. –
0
이 동작은 다음과 같습니다
하여 MFC 창 클래스는 그들로부터 예상되는 무엇을 수행하지 마십시오 많은 방법 대신에 그들이 보내거나 큐에 메시지를 게시이있는 GUI/주 그 스레드가 수신 대기합니다.
따라서 기존의 크로스 스레드 메시징 메커니즘을 사용하거나 나만의 메시징 메커니즘을 만들어야합니다.
고맙지 만 호출자가 UI 스레드에 있도록하고 그렇지 않으면 예외를 throw하는 것을 의미합니다 ... –