Android 구성 요소 및 빌드 과정

최서정·2024년 11월 12일

Android

목록 보기
1/3

Android Activity 의 생명주기

  • onCreate() : 액티비티가 생성될 때 호출되는 메서드, 초기화 작업이나 인터페이스 설정 등
  • onStart() : 액티비티가 화면에 보여지기 직전에 호출되는 메서드, 액티비티가 사용자에게 보여지기 시작
  • onResume() : 액티비티가 사용자와 상호작용을 시작하고 활동 상태에 들어갈 때 호출되는 메서드, 액티비티가 포그라운드에 있으며 사용자 입력을 받을 수 있음
  • onPause() : 액티비티가 일시 중지되거나 다른 액티비티가 화면을 가리는 등 포그라운드에서 벗어나기 전에 호출되는 메서드. 데이터 저장이나 네트워크 연결 해제 등
  • onStop() : 액티비티가 더 이상 사용자에게 보여지지 않고 화면에서 완전히 가려질 때 호출되는 메서드, 자원 해제나 정리 작업 수행
  • onRestart() : 액티비티가 onStop() 상태에서 다시 시작되기 전에 호출되는 메서드, 일시중지된 액티비티를 다시 시작할 때 필요한 초기화 작업 수행
  • onDestroy() : 액티비티가 소멸될 때 호출되는 메서드, 액티비티에 할당된 자원을 해제하고 종료 작업 수행



안드로이드 4대 컴포넌트

  1. 액티비티 (Activity)
    • 액티비티는 사용자 인터페이스 (UI)를 가지며, 상호작용하는 화면을 나타냄
    • 예를 들어, 앱의 로그인 화면, 설정 화면, 메인 화면 등이 액티비티로 구현됨.
    • 액티비티는 사용자 입력을 처리하고, 다른 액티비티와의 화면 전환을 관리하는 역할 수행
  2. 서비스 (Service)
    • 서비스는 백그라운드에서 실행되는 컴포넌트, 사용자 인터페이스를 갖지 않음
    • 주로 백그라운드에서 오래 실행되는 작업을 처리하기 위해 사용
    • 예를 들어, 음악 재생, 네트워크 요청, 데이터 동기화 등을 처리하는 데 사용될 수 있음
    • 서비스는 앱이 활성화되지 않은 상태에서도 실행될 수 있음.
      -> 포그라운드 : 사용자에게 보여지는 작업을 수행
      -> 백그라운드 : 사용자에게 직접 보이지 않는 작업 수행 ( 앱의 대부분)
      -> 바인드 : 앱 구성요소가 bindService()를 호출하여 해당 서비스에 바인딩되면 서비스와 상호작용 할 수 있음. 바인딩된 서비스는 Client - Server 형태로 상호작용. 또한 프로세스 간 통신으로 수행할 수도 있음.
  3. 브로드캐스트 리시버 (Broadcast Receiver) - intent
    • 브로드캐스트 리시버는 안드로이드 시스템에서 발생하는 브로드캐스트 메시지를 수신하는 컴포넌트
    • 브로드캐스트 메시지는 시스템 이벤트(배터리 부족 경고, 시간 변경 등)나 다른 애플리케이션에서 발생한 메시지를 포함할 수 있음.
    • 브로드캐스트 리시버는 이러한 메시지를 수신하고, 해당 이벤트에 대한 반응을 수행
    • 예를 들어, 충전기가 연결되었을 때 알림을 표시하거나 SMS 메시지를 수신했을 때 알림을 표시하는 등의 작업을 수행
      1. 정적 Broadcast Receiver : AndroidManifest.xml에 선언하여 앱 설치 시 receiver를 등록
      1. 동적 Broadcast Receiver : 앱이 실행중일 때 receiver를 실행, 소스 코드에 등록
  4. 콘텐트 프로바이더(Content Provider)
    • 콘텐트 프로바이더는 데이터를 관리하고 다른 애플리케이션과 데이터를 공유하기 위한 인터페이스 제공
    • 데이터베이스, 파일, 네트워크 등 다양한 데이터 소스에 접근하여 데이터를 읽고 콘텐트 프로바이더는 데이터를 읽고 쓰는 기능을 제공하며, 다른 애플리케이션에서 이 데이터에 접근할 수 있도록 함.
    • 예를 들어, 주소록 애플리케이션의 경우 콘텐트 프로바이더를 통해 연락처 정보를 다른 애플리케이션과 공유할 수 있음.
    • 다른 애플리케이션은 콘텐트 프로바이더를 사용하여 주소록에 있는 연락처를 검색하거나 새로운 연락처를 추가할 수 있음.
    • 이를 통해 데이터의 일관성과 보안을 유지하면서 애플리케이션 간의 데이터 공유 가능해짐.
    • 앱에서 Content Provider 를 구현하면 다른 앱에서는 Content Resolver 를 통해 데이터를 전달 받을 수 있음.



Android 빌드 과정

Android Studio에서 디버그 및 릴리즈를 실행하면 다음과 같은 프로세스를 통해 우리에게 apk 또는 aab 형식의 파일 제공

  1. 작성된 Source Code 및 Resource File, AIDL 파일이나 Gradle을 통해 의존성으로 추가할 모듈/라이브러리를 컴파일러가 변환한다.
    -> 소스 코드는 DEX 파일로 변환하고 그 외 모든 것들은 컴파일된 리소스로 변환
  2. Packager 는 DEX 파일과 컴파일된 리소스를 결합하여 APK 또는 AAB를 만든다.
  3. 만약 Play 스토어나 기기에 설치하려면 키스토어를 통해 APK/AAB에 서명해야함.
  4. 최종 APK를 생성하기 전에, Packager 는 앱이 기기에서 실행될 때 더 적은 메모리를 사용하도록 앱의 최적화를 위해 zipalign 도구를 사용

0개의 댓글