• Home
  • About
    • Yerim Oh photo

      Yerim Oh

      Happy and worthwhile day by day :)

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

[01] App: 안드로이드 앱 개발의 특징

11 Dec 2022

Reading time ~3 minutes

Table of Contents
  • 목차
  • 안드로이드 앱 개발의 특징
    • 컴포넌트 기반의 개발
    • 리소스를 활용한 개발

목차

  • 안드로이드 앱 개발의 특징
    • 컴포넌트 기반의 개발
    • 리소스를 활용한 개발

안드로이드 앱 개발의 특징

컴포넌트 기반의 개발

안드로이드 앱 개발의 핵심은 컴포넌트 component 이다.

[컴포넌트는 애플리케이션의 구성 요소임]

  • 컴포넌트는 안드로이드 앱뿐만 아니라 여러 애플리케이션을 개발할때 사용하는 개념
  • 컴포넌트를 한마디로 정의하면 애플리케이션의 구성 요소라고 할 수 있음
  • 컴포넌트는 애플리케이션이 아니라 애플리케이션을 구성하는 단위
  • 즉, 하나의 애플리케이션은 여러 컴포넌트로 구성 됨
  • 안드로이드 앱의 기본 구조도 컴포넌트에 기반을 두므로 하나의 앱은 여러 컴포넌트로 구성됨.
  • 그리고 안드로이드에서는 클래스로 컴포넌트를 개발함.
  • 즉, 하나의 클래스가 하나의 컴포넌트가 되는 것임

[안드로이드 앱을 구성하는 클래스는 모두 컴포넌트인가?]

  • 애플리케이션을 구성하는 모든 클래스가 컴포넌트는 아님
  • 앱은 여러 클래스로 구성되는데 크게 컴포넌트 클래스와 일반 클래스로 구분함
  • 둘다 개발자가 만드는 클래스지만 런타임 때 생명주기를 누가 관리하는가에 따라 차이가 있음
  • 일반 클래스
    • 앱이 실행될 때 클래스의 객체 생성부터 소멸까지 생명주기 관리를 개발자 코드에서 함
    • 안드로이드 앱의 구성 요소인 컴포넌트가 아닌 개발자가 임의의 목적 으로 만든 클래스
  • 컴포넌트 클래스
    • 개발자가 만들기는 했지만 생명주기를 안드로이드 시스템 에서 관리

[안드로이드 컴포넌트의 4가지 종류]

  • 컴포넌트는 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버 이렇게 4가지로 구분됨
  • 컴포넌트는 앱이 실행될 때 각각 다른 기능을 함
  • 액티비티
    • 화면을 구성하는 컴포넌트
    • 앱의 화면을 안드로이드폰에 출력하려면 액티비티를 만들어야 함
    • 앱이 실행되면 액티비티에서 출력한 내용이 안드로이드폰에 나옴
  • 서비스
    • 백그라운드 작업을 하는 컴포넌트
    • 화면 출력 기능이 없으므로 서비스가 실행 되더라도 화면에는 출력되지 않음
    • 서비스 컴포넌트는 화면과 상관없이 백그라운드에서 장시간 실행해야 할 업무를 담당함
  • 콘텐츠 프로바이더
    • 앱의 데이터를 공유하는 컴포넌트
    • 안드로이드폰에는 많은 앱이 설치되어 있으며 앱 간에 데이터를 공유 가능
    • 하나의 앱이 자신의 데이터를 다른 앱에 공유하려면 콘텐츠 프로바이더를 만들어야 하며, 다른 앱에서는 그 콘텐츠 프로바이더를 이용해 데이터에 접근함
    • 예를 들어 카카오톡 앱에서 프로필을 변경할 때 갤러리 앱의 사진을 이용할 수 있는데, 이때 콘텐츠 프로바이더를 이용해 데이터를 주고받음
  • 브로드캐스트 리시버
    • 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
    • 여기서 이벤트는 화면에서 발생하는 사용자 이벤트가 아니라 시스템에서 발생하는 특정 상황을 의미
    • 예를 들어 부팅 완료, 배터리 방전 같은 상황임

[4가지 컴포넌트 구분 방법]

  • 컴포넌트는 앱이 실행될 때 안드로이드 시스템에서 생명주기를 관리하는 클래스지만 개발자가 만들어야 하는 클래스임
  • 개발자가 컴포넌트 클래스를 만들 때는 지정된 클래스를 상속받아야 하는데 이 상위 클래스를 보고 구분할 수 있음
  • 액티비티는 Activity 클래스를 상속받아 만듦
  • 서비스는 Service 클래스를 상속받아 만듦
  • 콘텐츠 프로 바이더는 ContentProvider 클래스를 상속받아 만듦
  • 브로드캐스트 리시버는 BroadcastReceiver 클래스를 상속받아서 만듦

[main 함수가 없다]

  • 앱은 실행 시점이 다양함
  • 컴포넌트가 앱 내에서 독립해서 실행되는 특징 덕분에 앱의 실행 시점이 다양할 수 있음
  • 일반적으로 앱을 설치하면 홈 화면에 아이콘이 나오고 그 아이콘을 사용 자가 터치해서 실행함
  • 예를 들어 사용자가 알림 창에서 메시지 수신 알림을 터치하면 바로 채팅 화면이 열립니다.
    이처럼 앱의 실행 시점은 다양함
  • 그래서 안드로이드 앱에는 메인 함수 main function 개념이 없다고 말함
  • 메인 함수란 앱의 단일 시작점을 의미하는데 안드로이드 앱은 실행 시점이 다양해서 메인 함수 개념이 없다고 표현하는 것임

리소스를 활용한 개발

앞에서 살펴본 컴포넌트와 함께 안드로이드 앱 개발의 또 다른 특징은 리소스를 많이 활용 한다는 점임

리소스

  • 코드에서 정적인 값을 분리한 것
  • 앱에서 발생하는 데이터나 사용자 이벤트에 따른 동적인 값이 아니라 항상 똑같은 값이라면 굳이 코드에 담지 않고 분리해서 개발하는 것이죠.
    ➡ 이렇게 하면 코드가 짧아져서 개발 생산성과 유지·보수성이 좋아짐

[문자열을 리소스로 이용]
대표적인 예가 문자열을 리소스로 이용하는 것임
만약 화면에 애국가 가사를 출력한다면 다음처럼 코드를 작성함

/문자열을 코드로 작성하기/

textView.text = ”””
동해 물과 백두산이 마르고 닳도록 
하느님이 보우하사 우리나라 만세 
무궁화 삼천리 화려 강산 대한 사람, 
대한으로 길이 보전하세
“””

그런데 문자열이 항상 똑같다면 코드에 담지 않고 다음처럼 리소스로 등록해서 사용하는 게 효율적

/문자열을 리소스로 등록하기/
<string name=”mytxt”>
동해 물과 백두산이 마르고 닳도록 
하느님이 보우하사 우리나라 만세 
무궁화 삼천리 화려 강산 대한 사람, 
대한으로 길이 보전하세
</string>

이렇게 리소스로 등록해 두면 다음처럼 간편하게 사용 가능 /kotlin /문자열 리소스 사용 예/ textView.text = resources.getString(R.string.mytxt) ```

[특징]

  • 이처럼 안드로이드 앱을 개발할 때는 많은 요소를 리소스로 등록해서 사용함
  • 앞으로 자세히 다루겠지만 문자열 이외에 색상, 크기, 레이아웃, 이미지, 메뉴 등 많은 요소를 리소스로 활용할 수 있음
  • 또한 이미지 등 몇몇을 제외하면 대부분 리소스는 XML 파일로 작성함


KotlinApp Share Tweet +1