Programming/Language Tip

안드로이드 - 서비스와 액티비티간 통신

awesometic 2017. 5. 8. 15:16
반응형

 간단하게 말로만 정리하겠습니다.




 서비스와 액티비티간 통신이 많이 필요할 때가 있습니다. 그냥 많이 필요합니다. 경험상 상황별로 다음의 방법이 가장 좋네요.


1. Local

 서비스와 액티비티간, 일방적으로 간단한 정보를 보낼 땐 브로드캐스트 리시버가 최고라고 생각합니다. 코딩도 그나마 간단하구요.

 하지만 복잡하며 좋은 성능이 필요하고, 마치 자신의 메서드인냥 실행하고 반환값을 얻고 하려면 Local Binder입니다.


2. Remote

 간단하면 역시 브로드캐스트 리시버입니다. 하지만, 리시버를 받는 입장에서 액션에 대한 공개 범위? 가 모든 프로세스라면 보안에 취약해질 수 있습니다. 그럼 바인더를 사용해야 할텐데, 서비스가 다른 프로세스에서 작동한다면 Local Bind가 불가능하죠. Remote로 해야합니다. 코드가 조금 (많이) 복잡해지더라도 IPC에선 AIDL이 최곱니다.


Conclusion.

 Simple : 브로드캐스트 리시버

 Complex : 바인더 (Local and/or Remote(AIDL))


 혹시나 다른 더 좋은 방법이 있으면 제발 알려주세요 :)

반응형