App_Dev/Android

[ 앱 개발자 도전기 : 안드로이드 ] 안드로이드 앱 개발의 특징 정리해보기.

안다미로 : Web3 & D.S 2024. 11. 15. 17:57

 

 

 

 

[ 앱 개발자 도전기 : 안드로이드 ]  

안드로이드 앱 개발의 특징 정리해보기.

 


 

∇ 안드로이드 앱 개발의 특징.

      목   차
   
   1. 컴포넌트 기반의 개발 진행.
   2. 리소스를 활용한 개발.

 


 

Ⅰ. 컴포넌트 기반의 개발 진행.


   ★ 안드로이드 앱 개발의 핵심  ===  "컴포넌트 (component) "

 

 

         ◎ [ 컴포넌트(component) 는 애플리케이션의 구성 요소 ! ]

 

                   ● " 컴포넌트 " ==  안드로이드 앱 이외에도,  여러 애플리케이션을 개발할 때 사용하는 개념.

 

                   ● " 컴포넌트 "를 한마디로 정의하면,  " 애플리케이션의 구성 요소 " 라고 할 수 있습니다. 

                            == "컴포넌트" 는 애플리케이션이 아니라,  "애플리케이션을 구성하는 단위 !"

 

                   ● 즉, 하나의 애플리케이션은 "여러개의 컴포넌트"로 구성됨.

                           == 안드로이드 앱의 기본 구조 역시 컴포넌트에 기반을 두므로

                                     하나의 앱은 여러개의 컴포넌트로 구성됩니다.

 

                   ○ " 안드로이드에서는 '클래스'로 '컴포넌트'를 개발합니다 ! "

                          == 즉, 하나의 클래스가 하나의 컴포넌트가 되는 것 !!

 


 

 

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

 

                   ● 애플리케이션을 구성하는 모든 클래스가 컴포넌트는 아님. !

                           == 앱은 여러 클래스로 구성  :   "컴포넌트 클래스"  & "일반 클래스"

                                  - 런타임 시에 "생명주기"를 누가 관리하느냐에 따라서 차이가 있습니다.

 

 

 

                  ◇ 일반 클래스.

 

                             ○ 앱이 실행될 때, 클래스의 객체 생성부터 소멸까지의 생명주기 관리를

                                     개발자 코드에서 합니다.

                             ○ 안드로이드 앱의 구성-요소인 컴포넌트가 아닌, 개발자가 임의의 목적으로 만든 클래스,

 

 

                  ◆ 컴포넌트 클래스.

 

                             ○ 개발자가 코드를 구성하기는 했지만,  생명주기를 안드로이드 시스템에서 관리.

 


 

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

 

                   ● 컴포넌트는  [  Activity, Service, Content Provider, Broadcast reciver  ] 

                           이렇게 4가지로 구분됩니다.

 

                   ● 이 4가지 분류의 컴포넌트들은 앱이 실행될 때 각각 다른 기능을 합니다.

 

                        ▼ Activity(액티비티)

                                 - 화면을 구성하는 컴포넌트

                                 - 앱의 화면을 안드로이드폰에 출력하려면, 액티비티를 만들어야 합니다.

                                 - 앱이 실행되면, 액티비티에서 출력한 내용이 안드로이드폰에 나옵니다.

 

 

                        ▼ Service(서비스)

                                 - 백그라운드 작업을 하는 컴포넌트.

                                 - 화면 출력 기능이 없으므로, 서비스가 실행되더라도 화면에는 출력되지 않습니다.

                                 - 서비스 컴포넌트는 화면과 상관없이,

                                      백그라운드측면에서 장기간 실행해야 할 업무를 담당합니다.

 

 

                        ▼ Content Provider(콘텐츠 프로바이더)

                                 - 앱의 데이터를 공유하는 컴포넌트.

                                 - 안드로이드폰에는 많은 앱이 설치되어 있으며, 앱 간에 데이터를 공유 가능합니다.

                                 - 하나의 앱이 자신의 데이터를 다른 앱에 공유하려면 '콘텐츠 프로바이더'를 만들어야 하며,

                                       다른 앱에서는 그 콘텐츠 프로바이더를 활용해서 데이터에 접근합니다.

                                    ex) 카카오톡 앱에서 프로필을 변경하려고 할 때,  갤러리에 있는 사진을 불러오려고 한다면

                                                  콘텐츠 프로바이더를 활용해서 데이터를 주고 받아야 합니다.

 

 

                        ▼ Broadcast Receiver (브로드캐스트 리시버)

                                 - 시스템 이벤트가 발생할 때,  실행되게끔 하는 컴포넌트 !

                                      - 이 이벤트는 화면에서 발생하는 '유저 이벤트'가 아니라,

                                                             "시스템에서 발생하는 특정 상황"을 의미합니다 !

 

                                            ex) 부팅 완료,  배터리 방전

 

 


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

 

                  ● "컴포넌트"는 앱이 실행될 때, 안드로이드 시스템상에서 생명주기를 관리하는 클래스이지만,

                           개발자가 만들어주어야 하는 클래스이기도 합니다.

 

                  ● 개발자가 컴포넌트를 만들 때는 "지정된 클래스를 상속받아야" 하는데  

                          이 때는 "상위 클래스를 보고서 구분" 할 수 있습니다.

 

                              - Activity : Activity 클래스를 상속받아 만듦

                              - Service : Service 클래스를 상속받아 만듦

                              - Content Provider : ContentProvider 클래스를 상속받아 만듦

                              - BroadCast Receiver : BroadcastReceiver  클래스를 상속받아 만듦

 

 

 


         ◎ [ main 함수가 없음 !]

 

                  ● 앱은 실행 시점이 다양합니다.

                         - 컴포넌트가 앱 내에서 독립해서 실행되는 특징 덕분에 앱의 실행 시점이 다양할 수 있습니다.

                  ● 일반적으로, 앱을 설치 시 홈 화면에 아이콘이 생기고 그 아이콘을 활용해 사용자가 터치하여 실행.

 

                  ● 다양한 시점에서 실행되는 앱의 특성상,  앱에는 메인 함수 main function 개념이 없습니다.

                       - > '메인 함수'란 앱의 단일 시작점을 의미하는데,

                              안드로이드 "앱은 실행 시점이 다양" 하므로 메인 함수 개념이 없다고 볼 수 있습니다.

 

 

 

 


 

 

 

Ⅱ. 리소스를 활용한 개발.


 ※ 컴포넌트를 활용하는 것과 함께,   

     안드로이드 앱 개발의 또 다른 특징은 '리소스'를 많이 활용한다는 점 입니다 !

 

 

 

     § 리소스.

            ○ 코드에서 '정적인 값'을 분리한 것 !

            ○ 앱에서 발생하는 '데이터'나 '유저 이벤트'에 따른 동적인 값이 아니라,

                   '항상 똑같은 값'이라면 굳이 코드에 담지 않고 "분리해서 개발"을 진행하는 것입니다.

 

                    = > 코드가 짧아지므로, 개발 생산성과 유지*보수성이 좋아지게 됩니다.

 

 

         ◎ [ ex )  문자열을 리소스로 이용 !]

               - 대표적인 케이스 : 문자열을 리로스로 이용하는 것 !

                     - 애국가 가사를 출력하려는 경우       

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

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

 

이렇게 적었던 코드를,  항상 똑같이 반복되기에 "리소스로 등록해서 사용" 하고자 한다면?

 

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

 

 

    이런 식으로 리소스로 등록하게 되면,

textView.text = resources.getString(R.string.mytxt) ```

이런식으로 간편하게 활용이 가능해집니다.

 

 

           ◎ [ 특징 !]

                  - 안드로이드 앱을 개발할 때는 많은 요소를 '리소르'로 등록해서 사용합니다.

                  - 문자열 이외, 색상*크기*레이아웃*이미지*메뉴 등 많은 요소를 리소스로 활용 가능합니다.

                  - 이미지 등 몇몇을 제외하면,  대부분의 리소스는 "xml" 파일로 작성합니다. !