# 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()함수로 프로그램이 구동되는 일반적인 구조와는 다르지만,
다양한 케이스로 앱이 구동되는 스마트폰의 환경을 고려하면 오히려 적절한 방식이라고 볼 수 있을듯 하다.
'개발(Development) > Android(안드로이드)' 카테고리의 다른 글
[안드로이드] LayoutParams(레이아웃 파라미터) 개념과 구조/종류 (0) | 2021.07.12 |
---|---|
[안드로이드] XML | 코드로 화면을 그리는 메서드: setContentView() (0) | 2021.07.11 |
[안드로이드] R.java / R.jar 개념 및 위치: 리소스 식별 변수 관리 원리 (0) | 2021.07.11 |
[안드로이드] 매니페스트(AndroidMainfest.xml) 개념과 구조 (0) | 2021.07.11 |
[안드로이드] 그레이들 Gradle Scripts에 대한 정리 (0) | 2021.07.10 |
댓글