본문 바로가기
개발(Development)/Android(안드로이드)

[안드로이드] Entry Point, Launcher, 4대 컴포넌트 개념

by 카레유 2021. 7. 11.

# Entry Point 란?

프로그램의 "구동이 시작되는 부분" 을 Entry Point라고 한다.

예를 들어 Java, C계열의 언어는 main()함수가 Entry Point가 되며,

Python은 처음 실행시키는 py파일(모듈)이 Entry Point가 된다.(내부변수 __name__에 __main__이 할당된다.)

 

class MyClass{
    // ../
    public static void main(String[] args){
        //.. 앱의 시작점(Entry Point)
    }
    // ...
}

# 안드로이드의 Entry Point

안드로이드 앱은 명시적인 형태의 Entry Point가 존재하지 않는다.

대신 4대 컴포넌트가 모두 앱의 시작점이 될 수 있다.

 

예를 들어,

홈화면(Launcher)에서 앱 아이콘을 눌러 실행시키면 Activity가 Entry Point가 되고,

SMS가 수신되어 메시지 앱이 실행되는 경우엔 BroadcastReceiver가 Entry Point가 되는 식이다.


# 안드로이드 Launcher란?

홈 화면 앱을 말한다.

다른 앱들의 목록을 보여주고 터치하면 실행시켜주는 특별한 형태의 애플리케이션이라고 볼 수 있다.

다른 앱을 실행 중인 상황에서 홈버튼을 누르면 홈화면(Launcher)앱으로 복귀한다.

* Android에선 홈화면도 앱이며, 다른 Launcher 앱으로 바꿀 수도 있다.

홈화면에서 아이콘 터치시 실행되는 액티비티를 지정하기 위해서는 

AndroidManifest.xml 파일의 해당 Activity의  intent-filter 항목에 action, category 태그를 아래와 같이 설정해야 한다.

 

<activity android:name=".MainActivity">
    <intent-filter>
    
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    
    </intent-filter>
</activity>

# 안드로이드의 4대 구성요소(Components)

Activity, Servic, BroadcastReceiver, ContentProvider를 말한다.

각 구성요소가 모두 앱의 시작점(Entry Point)이 될 수 있다.

 

1.  Activity (액티비티)

화면을 갖는 구성요소.

화면 하나 당 하나의 액티티비티를 갖는다.

 

 

2. Service (서비스)

화면이 없는 구성요소.

백그라운드에서 실행된다.

 

 

3. BroadcastReceiver (브로드캐스트 리시버)

안드로이드 시스템에서 발생하는 수많은 알림/방송(브로드캐스트)를 수신하는 구성요소.

전화가 오거나, 배터리가 부족해지는 등의 알림/방송이 송출되면, 이를 수신하여 적절한 처리를 할 수 있다.

 

 

4. ContentProvider (컨텐트 프로바이더)

앱의 내부 데이터를 외부 앱에 제공하는 구성요소.

사진 갤러리앱의 사진을 불러올 수 있는 것은 '사진 갤러리앱'이 콘텐트프로바이더로 사진을 공유해주기 때문이다.


main()함수로 프로그램이 구동되는 일반적인 구조와는 다르지만,

다양한 케이스로 앱이 구동되는 스마트폰의 환경을 고려하면 오히려 적절한 방식이라고 볼 수 있을듯 하다.

 

 

댓글