니라 프로세스의 지역 호출에도 적용된다. 원격 호출의 실행은 종종 클라이언트 개발자가 알지
못하는 코드에 의해 수행된다. 호출 스레드가 차단되는 시간은 원격 구현의 변화에 따라 다를 수
있다. 따라서 동기식 원격 호출은 응용프로그램의 반응성에 예상치 못한 영향을 미칠 수 있다.
일반적으로
UI
스레드에 미치는 영향은,
UI
스레드에서 비동기적으로 동작하는 작업자 스레드
에서 모든 원격 호출을 실행함으로써 피할 수 있다. 그러나 서버 스레드가 차단된 경우, 클라이
언트 스레드도 스레드와 스레드의 모든 객체가 살아 있는 상태로 기한 없이 차단된다. 이는
6
장
에서 살펴볼 메모리 누수의 위험성을 가진다.
비동기식
RPC
를 사용하라. 클라이언트가 자신의 비동기식 정책을 구현하게 하는 대신, 모든 원
격 메서드 호출이 비동기적으로 실행되도록 정의할 수 있다. 클라이언트 스레드는 비동기식
RPC
로 트랜잭션을 시작하고 즉시 반환한다. 바인더는 서버 프로세스로 트랜잭션을 제공한 다음에
클라이언트에서 서버로의 연결을 닫는다.
비동기 메서드는 반드시
void
를 반환해야 하며,
out
또는
inout
으로 선언된 인수가 없어야 한
다. 결과값을 얻기 위해선 콜백 구현을 사용한다.
비동기식
RPC
는
oneway
키워드를 붙여
AIDL
안에 정의하며
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.