기본적으로 안드로이드 구조는 위와 같은 방식으로 되어있습니다. 프레임워크쪽에서 앱 개발자들이 개발을 하고, 안드로이드 시스템 서비스는 구글 개발자, HAL (Hardware Abstraction Layer) 는 안드로이드 하드웨어 제조사들이 개발하는 영역입니다.

 

안드로이드 프레임워크에서는 어떤 일이 일어나고 있을까?

  • 안드로이드 앱을 작성하다 보면 context에 접근하거나 다른 system service를 사용하려면 이렇게 호출을 하는 경우가 많은데 실질적으로 어떻게 동작하는지, 또한 프로세스간 어떤식으로 데이터를 교환 및 실행을 시키는지 궁금증이 커졌습니다.
  • 또한 액티비티는 왜 시스템서비스에서 관리하는지 알고 싶었습니다. 

 

안드로이드 어플리케이션의 통신 방법

 

안드로이드의 모든 어플리케이션들은 위와 같이 시스템 서버와 통신하기 위해서는 proxy → binder IPC → Stub 라는 통로를 거치게 됩니다. 

 

 

 

Parcelable 및 Bundle 혹은 CustomObject를 통해서 이를 구현하여 Binder에게 넘겨주어야 합니다.

 

  • 즉 위와 같은 방법으로 데이터가 전달되게 됩니다.
  • IPC를 사용하는 예로서는 Intent, System Service, Content Provider등 안드로이드 구성요소에 사용됩니다.

 

액티비티가 시스템 서비스에 의해 관리되는 이유

  • 프로그래머가 만든 하나의 apk 패키지는 1개의 프로세스를 기본적으로 할당받게 됩니다. 그리고 여러 앱을 실행시키기 위해서는 실행되고 있는 프로세서들을 알고있는 안드로이드 OS가 직접 실행시키게 되는것이며, Task를 가지고 서로다른 프로세스에 있는 activity들을 실행시키기 위해서는 OS가 직접 액티비티 매니저를 통해 관리하는 것이 효율적일것입니다.
  • 즉, 액티비티간에 전환은 프로세스간의 전환이 될 확률이 높으며 이를 통해서 데이터를 주고 받으려면 안드로이드 OS의 도움을 받아야 합니다.

 

Reference

 

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기