유저와 상호작용하는 진입점 중 하나이다.
하나의 화면을 구성한다
액티비티는 다른 액티비티에 대해 독립적이다.
어떤 앱의 액티비티에서 다른 앱의 액티비티를 실행할 수 있다.
상호작용:
- 실행중인 액티비티를 계속 실행하기 위해 사용자의 관심사항을 추적
- 유저가 되돌아갈 수 있고 이전에 사용된 프로세스들에 대해 아는 것
- 이전에 사용된 프로세스들을 보관하는 우선순위를 높임
- 앱은 프로세스가 죽게 하는 것을 도움
- 액티비티를 복원할 수 있음
- 앱들 간에 유저 flow를 구현하는 방법을 제공하고 앱들이 이러한 flow 형성 협조를 도움
액티비티(Activity) 특징
- 액티비티의 크기는 상태바(Status Bar) 영역을 제외한 화면 전체로 고정(원하는 위치에 원하는 크기로 변경할 수 없음)
- 두 개의 액티비티가 동시에 Resumed 상태일 수 없음
- 다른 애플리케이션의 액티비티를 불러낼 수 있음
- 액티비티 내에는 프래그먼트(Fragment)를 추가하여 화면을 분할하여 별도로 조작할 수 있음
- 다양한 엔트리 포인트
- main vs other activity
일반적인 프로그래밍 패러다임과 안드로이드 프로그래밍의 차이점
일반적으로 Main method를 이용해 app을 실행하는 방식과는 다르게, 안드로이드는 액티비티 생명주기에 일치하는 콜백함수를 실행하여 app을 실행한다.
Activity 생명주기
onCreate()
- View를 생성하고 데이터를 연결하는 콜백 메소드
- setContentView를 반드시 실행
onStart()
- 액티비티가 visible 변환
- foreground로 나가고 상호작용하기 위한 최종 준비를 위한 콜백 메소드
onResume()
- activity가 유저와 상호작용 하기 전에 호출
- onResume()이 호출된 액티비티가 스택의 최상단으로 이동
- 유저의 인풋을 모두 캡쳐
- 핵심 기능 호출
onPause()
- activity가 focus를 잃거나 paused 상태일 때 호출
- 부분적으로 유저에게 보여지고 있음
- Back or Recent 버튼 누르면 Paused state 전환
- 유저가 곧 떠나거나 stopped 되거나, resumed 가 될 예정
- 부분적으로 보이기에 유저에게 UI를 update를 해야함
- 데이터 저장, 네트워크 콜, database transaction 실행을 하면 안되는 상태
onStop()
- 더이상 유저에게 보이지 않는 경우에 호출
- 곧 파괴되거나 새로운 액티비티가 실행중이거나 존재하는 액티비티가 resumed 상태로 들어가거나 stooped 액티비티를 커버할 때 호출
- 결국 stopped되면 화면에 보이지 않음
onRestart()
- stopped state가 곧 재시작 될 경우 호출
onDestroy()
- 액티비티 파괴 전 호출
- 액티비티가 받는 마지막 콜백
- 여기서 모든 자원이 방출되도록 구성