안드로이드 4대 컴포넌트 안드로이드에서 가장 중요한 4대 컴포넌트는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더이다. 그리고 그외의 인텐트, 인텐트 필터, 노티피케이션, 프래그먼트가 존재한다. 먼저 액티비티(Activity)는 사용자 인터페이스 화면을 구성하는 컴포넌트이다. 다양한 위젯들이 화면안에 구성이되고, 사용자에게 시각적으로 보여지게 된다. 서비스(Service)는 백그라운드에서 실행되는 컴포넌트이며, 백그라운드에서 실행되기때문에, 시각적인 사용자 인터페이스를 액티비티와 다르게 가지지 않는다. 인텐트(Intent)는 앱을 개발하다보면 데이터를 주고 받고 싶은 경우가 있다. 이때 인텐트를 사용하여 데이터를 주고 받게 되는데,사용되는 것이 인텐트이다. 액션도 넣을 수 있고, 플래그도 넣을 수도 있다. 메시지라고 생각하면 더 이해가 잘될 것이다. 브로드 캐스트 리시버(Broadcast Receiver)는 브로드캐스트(알려주다), 리시버(받는자), 안드로이드가 알려주는 것을 받는다. 배터리 부족, 언어 설정 변경 등을 수신해서 반응할 수 있다. 이때 배터리가 얼마 만큼이 있을 때 알림을 받을 것인지 설정이 가능한데, 이 역할을 인텐트 필터가 하게 된다. 인텐트 필터(Intent Filter)는 수신할 수 있는 인텐트를 정의하여 컴포넌트를 정의하는 역할을 하는 컴포넌트이다. 콘텐트 프로바이더(Content Provider)는 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공하는 컴포넌트이다. 나의 애플리케이션에서 다른 애플리케이션이 어떤 데이터를 가져갈 수 있게 해줄게 하고 메소드를 하나 만들어 놓고, 다른 어플리케이션에서는 그 메소드를 호출하여 가져가도록 제공한다. 노티피케이션(Notification)는 사용자에게 특정 이벤트를 알리는 컴포넌트이다. 예를 들어서 토스트, 알림바가 있다. 요즘은 서비스, 즉 백그라운드를 사용할 때에 서비스를 사용하고 있따는 노티피케이션을 꼭 띄어줘야한다. 프래그먼트(Fragment)는 액티비티내에서 독자적으로 동작할 수 있는 UI 컴포넌트이다. 액티비티를 반으로 나눌 수 있는 방법이 없는데, 프래그먼트 두개로 나누고 사용하면 가능하다. 액티비티 라이프사이클(Activity LifeCycle) 기존에 실행했던 앱을 또 실행하게 되면 속도가 늦어지게 된다. 그렇기 때문에 안드로이드는 기존에 실행했던 앱을 백그라운드에서 가지고 있다가 사용할 때 다시 가져와서 사용할 수 있도록 라이프사이클을 거치게된다. 단, 내부 스케쥴링에 의해서 내부 메모리가 부족하거나 하면 순차적으로 앱을 종료시켜주기는 한다. 액티비티 생명주기액티비티 생명주기는 onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestory()순으로 실행되며, 경우에 따라서 onRestart() 메소드가 호출되기도 한다.
여기서 onStop()과 onDestroy()는 디바이스의 상태에 따라서 불리지 않을 수도 있다. 라이프사이클(LifeCycle) 기본 예제 [activity_main.xml]
먼저 버튼 하나가 있는 액티비티 레이아웃을 하나 만든다. 그리고, 각종 호출 메소드들에 로그(Log)를 찍어보고, 라이프사이클의 순서를 알아보자!
[앱 실행했을 때]
[홈 버튼 눌렀을 때]
[다시 앱 실행했을 때]
[앱 종료했을 때]
TIP & TECH 사용자가 홈 키를 눌렀는지를 파악하는
방법 라이프사이클 전체코드보러가기 |