
강의를 들으며 안드로이드 앱 개발 공부를하다가, 강의가 너무 오래되어 현재와 많은 부분이 다른 것을 확인했다.
그렇다고 최신 강의들을 듣기엔 아쉬운 리뷰가 많아 수강이 망설여졌다.
그래서 유튜브에서 최신 강의를 찾다가 8개월 전에 업로드 된 강의를 듣게됐다.
하지만, 그것도 코드 따라적기식의 강의라서 개념 설명이 부족함을 느꼈다.
그래서 개념과 전체적인 틀을 먼저 이해하는게 필요하다고 생각되어 공식문서와 GPT를 참고하여 블로그 정리를 시작한다 :)
안드로이드 앱의 구조 및 동작 원리
안드로이드 앱의 구조
안드로이드 앱은 크게 4가지 주요 컴포넌트로 구성되어있다
① 액티비티 (Activity)
앱의 화면(UI) 을 담당하는 요소
- 예를 들어, 로그인 화면, 메인 화면, 설정 화면 등은 각각 다른 Activity
- 앱을 실행하면 기본적으로 MainActivity가 실행됨
- 액티비티는 수명 주기(lifecycle) 가 있어서, 앱이 켜지고, 백그라운드로 가고, 종료되는 과정이 있음
② 프래그먼트 (Fragment)
- 액티비티 내부에서 UI를 나누어 사용할 수 있는 요소
- 하나의 액티비티 안에 여러 개의 프래그먼트가 들어갈 수도 있음
- 예를 들어, 네이버 앱의 홈 화면에서 뉴스, 쇼핑, 웹툰 등 탭이 나뉘는 것이 전형적인 프래그먼트 사용 예시
③ 서비스 (Service)
- UI가 없는 백그라운드 작업을 수행하는 요소
- 예를 들어, 음악 앱이 백그라운드에서 노래를 계속 재생하는 기능을 구현할 때 사용
④ 브로드캐스트 리시버 (Broadcast Receiver)
- 시스템에서 발생하는 이벤트(알람, 배터리 부족 등)를 감지해서 처리하는 역할
- 예를 들어, 배터리가 부족할 때 화면 밝기를 자동으로 낮추는 기능을 만들 수 있음
안드로이드 앱의 동작 원리
안드로이드 앱은 앱 프로세스와 컴포넌트 간의 상호작용을 통해 동작
- 사용자가 앱 아이콘을 클릭하면
- MainActivity.kt (앱의 메인 화면)이 실행됨.
- onCreate() 메서드가 호출되면서 UI가 화면에 나타남.
- 사용자가 버튼을 누르면
- setOnClickListener를 통해 버튼 클릭 이벤트를 감지함.
- Intent를 사용해서 다른 화면으로 이동하거나, 새로운 기능을 실행함.
- 백그라운드에서 작업이 필요하면
- Service 또는 Worker를 이용해 네트워크 요청을 보내거나 데이터 처리를 함.
- Service 또는 Worker를 이용해 네트워크 요청을 보내거나 데이터 처리를 함.
- 앱이 닫히거나 백그라운드로 가면
- onPause(), onStop(), onDestroy() 같은 라이프사이클 메서드가 호출됨.
- onPause(), onStop(), onDestroy() 같은 라이프사이클 메서드가 호출됨.
즉, 안드로이드 앱은 액티비티(Activity) 를 중심으로 실행되며, 프래그먼트(Fragment), 서비스(Service), 브로드캐스트 리시버(Broadcast Receiver) 같은 다양한 요소들이 협력하면서 동작
안드로이드 앱에서 자바가 아닌 코틀린을 사용하는 이유
문법이 간결하고 코드 양이 줄어듦
- 자바는 반복적인 코드가 많지만, 코틀린은 훨씬 짧고 직관적
// 자바(Java)
public String sayHello() {
return "Hello, World!";
}
// 코틀린(Kotlin)
fun sayHello() = "Hello, World!"
Null 안정성 (Null Safety)
- 자바에서는 NullPointerException(NPE)이 자주 발생하는데, 코틀린에서는 null을 명확하게 구분해서 이를 방지할 수 있음
// 자바(Java)에서는 null 체크를 수동으로 해야 함
String name = null;
if (name != null) {
System.out.println(name.length());
}
// 코틀린(Kotlin)에서는 null 안전성을 지원함
var name: String? = null
println(name?.length) // null이 아니면 실행, null이면 실행 X
람다 표현식 지원 (간결한 코드)
- 코틀린에서는 함수형 프로그래밍을 지원해서 코드가 더 깔끔함
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it } // [1, 4, 9, 16, 25]
코루틴(Coroutines) 지원 → 비동기 처리에 강함
- 코틀린은 Coroutine 을 통해 비동기 작업을 쉽게 다룰 수 있음
- 예를 들어, API 요청을 보낼 때 Coroutine을 사용하면 코드가 더 간결하고 안전
정리
▷ 안드로이드 앱은 액티비티, 프래그먼트, 서비스, 브로드캐스트 리시버 등으로 구성됨.
▷ 앱 실행 → UI 로드 → 이벤트 처리 → 백그라운드 작업 → 종료의 흐름으로 동작함.
▷ 코틀린은 자바보다 코드가 간결하고, Null 안정성, 람다 표현식, 코루틴 등 다양한 장점이 있음.
'개발새발개발 > Kotlin' 카테고리의 다른 글
[Kotlin] 안드로이드 스튜디오 기본 컬러 정의하는 법(기본, Jetpack) (0) | 2025.03.23 |
---|---|
[Kotlin] 안드로이드 스튜디오 프로젝트 기본 구조 이해하기 (0) | 2025.03.17 |
[Kotlin] 안드로이드 스튜디오에서 Toast와 시스템바 고려해서 화면 확장하는 방법 (0) | 2025.03.15 |
[Kotlin] 안드로이드 스튜디오 - ViewBinding을 활용한 스톱워치 앱만들기 (0) | 2025.03.14 |
[Kotlin] Kotlin 설치 및 개발 환경 구축하기(기본 셋팅) (0) | 2025.03.05 |