1. 안드로이드 어플리케이션 구성요소
2. 안드로이드 어플리케이션 구성요소 (Activity)
• 어플리케이션 화면을 구성, 각 화면이 ACtivity
3. 안드로이드 어플리케이션 구성요소(서비스)
• 백 그라운드에서 실행되어짐 (사용자가 눈으로 볼 수 없음)
4. 안드로이드 어플리케이션 구성요소 (컨텐트 프로바이더)
•어플리케이션 내의 데이터베이스를 공유
• 데이터베이스의 공유 범위 지정 가능
5. 안드로이드 어플리케이션 구성요소 (Broadcast Receiver)
• 주로 시스템 상태에 관련된 메시지에 반응
(배터리 레벨, SD카드 삽입 등…)
• 브로드캐스트 메시지는 인텐트로 구성됨
6. 안드로이드 어플리케이션 구성요소 (Notification)
•사용자에게 메시지를 전달하는데 사용
• Notification Bar와 Notification Panel로 구성
7. 안드로이드 어플리케이션 구성요소 (Toast)
• 간단한 메시지를 표시하는데 사용
- 잠시 화면에 표시되었다가 사라짐
8. 안드로이드 어플리케이션 구성요소 (Intent)
• 컴포넌트 호출 및 메시지 전달의 매개체
• 인텐트에 데이터를 담아 호출 대상 컴포넌트에 전달 가능
• 유형에 따라 명시적 인텐트 (Explicit Intent)와
암시적 인텐트 (Implicit Intent)로 구분
•명시적 인텐트 (Explicit Intent)
- 호출 대상 컴포넌트의 정보가 명시되어 있음
•암시적 인텐트 (Implicit Intent)
- 호출 대상 컴포넌트의 특징이 정의되어 있음
• 효율적인 메모리 관리를 위해 존재
• 상태에 따른 분류
- 활성(Active), 일시정지(Paused), 정지(Stopped)
• 생애주기에 따른 분류
onCreate()
[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonStart()
onResume()
onPause()
onStop()
onRestart()
onDestroy()
•상태에 따른 분류 : 활성(Active)
- 화면에 표시되어 사용자와 상호작용중인 상태
• 상태에 따른 분류 : 일시정지(Paused)
- 화면에는 표시되나 사용자와 상호작용 불가능
• 상태에 따른 분류 : 정지(Stopped)
- 액티비티가 화면에서 완전히 사라진 상태
생애주기에 따른 분류 : Lifecycle Diagram
• onCreate()
- 액티비티의 초기화를 담당
- 위젯 인스턴스의 생성 및 값 설정
- 일반적으로 액티비티의 레이아웃을 설정하는 메소드인 setContentView()메소드가 존재
- 데이터베이스 초기화, 리스트 어댑터 초기화 등의 작업을 수행
• [안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonStart()
액티비티가 화면에 표시됨
사용자와의 상호작용 (버튼 누르기, EditText에 문자열 입력 등)은 불가능
• onResume()
사용자와의 상호작용 가능해짐
실질적으로 액티비티가 제 기능을 수행할 수 있게 되는 시점
• 액티비티 상태 변화 : onCreate -> onResume()
•onPause()
사용자와의 상호작용이 중지됨
화면에서는 아직 보이는 상태
액티비티 종료를 대비해 상태를 저장하는 등의 작업 수행
메모리가 부족할 경우 종료될 수 있음
• onStop()
액티비티가 화면에서 보이지 않는 상태
메모리가 부족할 경우 종료될 수 있음
• onRestart()
onStop() 메소드 호출 이후 정지상태에 있던 액티비티를 다시 화면에 표시할 때 호출됨
• onDestroy()
finish() 메소드를 통해 액티비티가 종료될 때 호출됨
액티비티가 종료될 때 항상 호출된다는 보장은 없음
• 액티비티 상태의 저장/ 복구
- Bundle 객체에 액티비티의 상태정보를 저장
- Key-Value 방식으로 각각의 데이터를 저장
• 액티비티 상태를 저장하는 방법
-예기치 못한 상황 (시스템 메모리 부족) 등으로 인해
액티비티가 종료될 경우
onSaveInstanceState(Bundle) 사용
- 사용자의 의도에 의해 액티비티가 종료될 때는 위의
메소드가 호출되지 않음
• 액티비티 상태의 복구
- onCreate(Bundle)
- onRestoreInstanceState(Bundle)
• onSaveInstanceState(Bundle)이 호출되지 않았다면, 위의
두 메소드의 인자로 받는 Bundle 객체는 null
• onSaveInstanceState() 및 onRestoreInstance() 메소드는
생애주기 메소드가 아니므로 항상 호출됨을 보장할 수 없음
• 액티비티 상태 저장/복구 메소드가 호출될 수 있는 시점
액티비티 생애주기를 구성하는 주요 메소드들