일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- LG전자
- toeice-mail
- englishwriting
- e-mailwriting
- 네마녀의날
- 국제유가
- S&P
- 토익이메일
- 사드보복완화
- 다우
- 셀트리온
- 어학·외국어
- 트럼프
- Intent
- 안드로이드
- ruby
- 시황
- 다우산업
- Python
- 무역전쟁
- 주식시황
- 화승엔터프라이즈
- 나스닥
- Java
- 금리인상
- 영어메일쓰기
- 영어메일
- android
- 파이썬
- dataframe
- Today
- Total
Developer MJ Story
[Android/basic] Android 4대 Components(Activity, Service) 본문
Android의 가장 기본이자 중요한 4대 components들에 대해서 간단하게 설명하겠습니다.
Android 4대 components는 Activity, service, brodcastRecevier, ContentProvider 입니다.
Android application 개발은 4대 component들을 상속받아 정의된 함수들을 override해서 구현하는 경우가 대부분입니다.
특히, 주의해야 할 사항으로 AndroidManifest.xml입니다. application에서 4대 component를 추가 했을 경우 AndroidManifest.xml에 추가 해줘야 android framework에서 인식이 가능하다. framework에서 인식이 가능해야 정상 동작하니 잊지 말고 AndroidManifest.xml에 추가하자.
이번에는 4대 component들 중 Activity와 service에 대해 알아 보도록 하겠습니다.
- Activity
사용자 인터페이스 화면을 말합니다.
UI개체들을 화면에 표시하고, 시스템이나 사용자의 터치 등의 action을 입력 받습니다.
1개의 application은 여러 개의 activity를 가질 수 있으며, activity사이를 이동할 때 Back Stack을 이용합니다.
Activity간 정보를 전달하는 방법은 여러 가지가 있지만, intent를 많이 사용합니다.
Activity는 아래 그림과 같이 자체적인 life cycle을 갖고 있습니다.
Life cycle에 해당하는 함수들이 맵핑되어 있어, 상황에 맞게 해당 함수를 override한 후 앱을 개발하면 됩니다.
- Service
Service는 사용자 인터페이스 화면이 아니라 back ground에서 실행되는 것을 말합니다.
UI와 상관없이 실행되는 코드들로 구성되어 있으며, 서비스를 호출하는 방법은 두 가지가 존재 합니다.
startService()와 bindService()입니다.
start service()는 intent를 이용하여 service를 단순 호출하는 방식으로 service가 호출된 이후 독립적으로 운영됩니다.
반면 bindServcie()는 사용자의 action, 특정 condition에 따라 bind된 service와 Binder 통신을 통해 service를 직접 제어가 가능합니다.
MP3 Player예를 들어 보겠습니다.
사용자가 activity에서 play 버튼을 터치하면, activity에서 service를 호출하여 해당 노래를 play합니다.
이때 startService()로 호출한 경우 stopService() 호출이 가능하므로 일시 정지, 뒤로 감기, 빠르게 감기 등의 부가 기능은 수행할 수 없습니다.
만약, Activity에서 bindService()로 호출한 경우 service에서 사전에 정의된 함수들을 activity에서 호출이 가능하므로 일시 정지, 뒤로 감기, 빠르게 감기 등의 부가 기능을 수할 수 있습니다.
이런 사항들을 고려해서 service를 startService()로 구현할지 bindService()로 구현할 지 선택해야 합니다.