2020. 3. 16. 09:24ㆍ프로그래밍/안드로이드
안드로이드 4대 구성요소는 엑티비티,서비스, 방송수신자, 콘텐츠 제공자를 말한다. 각각은 서로 독립된 요소들로 인텐트를 통해 상호작용을 한다.
1. 액티비티(Activity)
액티비티는 사용자와 상호작용을 위한 UI 화면을 담당하는 컴포넌트로, View, View Group를 사용하여 화면을 구성한다. 어플리케이션은 각각의 기능을 가진 하나 이상의 액티비티가 서로 관계를 가지며 작업을 수행며, 한 화면에 하나의 액티비티만을 보여준다. 액티비티는 새로운 화면이 시작되면 이전의 화면은 중단되어 백스택으로 push되며, 현재 화면이 종료되면 해당 액티비티는 스택에서 pop 되어 LIFO 방식에 따라 이전 액티비티가 재개되는 형식으로 동작이 이루어진다.
Activity 생명주기
사용자가 장치 사용 중 메모리가 부족한 경우, 런타임 시스템은 백스택의 액티비티를 종료시키는데 이 경우 데이터가 다 사라질 수 있다. 때문에 액티비티의 생명주기 관리를 통해 데이터를 저장하거나 복원하는데 필요하다.
onCreate() :액티비티가 최초로 실행될 때 호출. 리소스들을 초기화 하거나 View의 일반적인 상태를 설정
이전상태가 저장돼있을 경우 복원 가능
onStart() : 액티비가 화면에 보이기 바로전에 호출되는 메소드로 일반적으로 Broadcast Receiver를 등록하는 단계
onResume() : 액티비티가 사용자와 상호 작용하기 바로직전 호출되는 함수로, 호출 후 바로 액티비티가 화면에 보여짐(focus 잡은 상태)
onRestatr() : 액티비티가 중지된 이후 다시 시작되기 바로전에 호출
다른 액티비티가 호출되는 경우
onPause() : 액티비티 위에 액티비티가 올라와 focus를 잃었을 때 호출. 일부분이 보이거나 투명상태일 경우 호출됨. 활동은 여전히 사용자에게 표시되므로 시각적으로 활성 상태로 유지하고 UI 업데이트를 계속하는 것이 좋습니다. 이 메소드가 리턴 될 때까지 다음 활동이 재개되지 않으므로이 메소드의 구현은 매우 빠릅니다.
onStop() : 활동이 더 이상 사용자에게 보이지 않을 때 호출됨. onSaveInstanceState()를 호출해 값을 저장할 수 있음
onDestroy() : 활동이 종료되기 직전에호출(제거되는 경우).
2. 서비스(Service)
서비스란 UI 없이 백그라운드에서 실행되는 프로세스를 말한다. 노래나 내비게이션 처럼 화면을 끄거나 이동해도 작업을 수행한다. 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업에 사용하기 적합하다. 모든 서비스는 Service클래스를 상속받아서 사용해야 하며, 새로 만들어지 후에 매니페스트에 등록해 주어야한다.
서비스 생명주기
Unbound Service
시작과 종료에만 관여. 로컬서비스를 구현하는 것으로 프로세스 안에서 컴포넌트 사이에 유기적인 역할을 한다.
bound Servic 생명주기
startService():서비스를 시작
onCreate():서비스가 생성될 때 호출.Service에 필요한 리소스 등을 준비
onStartCommand():명령을 매번 처리하는 역할
onDestory():서비스가 종료될때 호출
Bounded Service
클라이언트 객체와 연결을 유지해 데이터를 주고받음. 다른 앱엥서 원격응로 서비스 실행. 모든 클라이언트와 연결이 해제되면 서비스 종료
bindService():서비스를 시작
onCreate():서비스가 생성될때 호출
onBind():통신 채널에 서비스를 반환
onUnbind():인터페이스와 클라이언트의 연결이 끊겼을 때 호출
onDestoiry():더이상 사용되지 않음을 서비스에 알리기 위해 호출됨
3. 콘텐츠 제공사(Content Provider)
콘텐츠 제공자는 데이터를 관리하며 주로 데이터를 전달할떄 많이 사용된다. 표준화된 UI를 통해 파일 입출력, SQLiteDB, Web 에서 데이더를 관리한다. 설정된 권한에 따라 안드로이드 시스템의 설정값이나 SD카드 접근을 가능하게 하거나, 공개하고 싶은 데이터만 공유하도록 하거나, 외부에서 접근하지 못하게 할수도 있다. 콘텐츠 제공자는 다른 앱의 데이터를 변경할수 있고 다른 앱에서도 권한에 따라 해당 데이터를 쿼리하거나 수정 할 수 있다.
4.방송 수신자(Broadcast Receiver)
다양한 이벤트 정보를 받아 반응하는 컴포넌트로 시스템 범위의 브로드캐스트 알림에 응답하는 구성요소이다. 대부분 UI는 없으며, 수신기를 통해 디바이스 상황을 감시하다 이벤트가 발생하게 되면 상태 표시줄 알람을 통해 사용자에게 정보를 전달할 수 있다. 보편적으로 다른 구성요소의 게이트웨이로서 사용하기 때문에 적은 수행량을 가진다
인텐트(Intent)
인텐트는 컴포넌트 간의 통신을하는 메시지 전달자. 각 컴포넌트들을 호출, 실행 할 수 있다. 인텐트는 두가지 형태가 존재한다.
명시적 인텐트-대상 컴포넌트가 확실한 경우
암시적 인텐트: 대상 컴포넌트가 지정되지 않으며, 대신 가장 적접한 컴포넌트 판별을 위한 충분한 시스템 정보를 포함
생명주기를 활용한 메모장예제
'프로그래밍 > 안드로이드' 카테고리의 다른 글
android Layout - 팔레트 종류와 기능 (0) | 2020.03.13 |
---|---|
안드로이드 레이아웃 종류 (0) | 2020.03.13 |
manifest (0) | 2020.03.09 |