대답은 예입니다. 서비스를 사용하여 메소드를 실행할 때 observeOn 메소드를 사용하면 mainThread가 기회가있을 때 요청을 실행할 수있는 기회를 기다리는 "관찰자"가 생성됩니다.
그래서 먼저 .observeOn (AndroidSchedulers.mainThread())을 사용하여 주 스레드를 관찰 한 다음 원격 API에서 응답을 얻으면 실행될 작업 또는 콜백을 구독하십시오.
이이 예가 될 것이다
@GET("/home")
Observable<Response> getHome();
당신의 API 인터페이스에서이 주석을 사용 랬 :이 RxJava (물론 사용을 개조 한)을 확인 할 수 있습니다 자세한 내용은
service.getHome().observeOn(AndroidSchedulers.mainThread()).subscribe(
new Action1<Response>() {
@Override
public void call(Response response) {
System.out.println("Response home");
System.out.println(response.getStatus());
System.out.println(response.getBody().mimeType());
System.out.println(response.getReason());
System.out.println(response.getUrl());
StringWriter w = new StringWriter();
try{
IOUtils.copy(response.getBody().in(),w,"UTF-8");
System.out.println(w.toString());
}catch (IOException e){}
}
});
link 안드로이드의 Handler (쓰레드를 처리하는 클래스)를 사용한다고 명시되어있다.
"O 스케줄링 스케줄러를 제공한다. 주어진 안드로이드 처리기 스레드에서, 특히 메인 UI 스레드에서 bservable. "
설명해 주셔서 감사합니다. 응답이 관찰자에게 다시 도달 할 때 사용되는 스레드로 주 스레드를 지정할 수있는 방법을 잘 알고 있습니다. 그러나 명확히하고 싶었던 문구에서 기본적으로 스레드가 HTTP 요청을 실행하는 스레드를 사용할 것이라고합니다. 누가 HTTP 요청을 실제로 실행하는지 아직도 혼란 스럽습니다. – user2934804
여러분의 환영합니다. 아마도 Android Handler가 실제로 어떻게 작동하는지 이해하는 것이 더 중요 할 것입니다. Android 설명서에서 검색하여 찾을 수 있습니다. 기본적으로 기본적으로 처리기는 대기열에 "작업"을 추가하므로 기본 UI 스레드에 기회가있을 때이 작업이 실행됩니다. Android의 Handler를 사용하여 Runnables를 구현할 수 있기 때문에 다른 스레드도 만들 수 있습니다. 안드로이드의 스레드 관리 프레임 워크의 일부인 Looper라는 객체를 사용합니다. – Jorch914