✔️ 보통 애플리케이션의 경우 그 자체가 하나의 실행단위가 되어 스스로 실행이 되는 구조이지만 안드로이드 애플리케이션은 독립적인 여러 다양한 실행 단위를 하나로 묶어 관리하는 개념
✔️ 하나의 Activity 에는 각각의 실행단위 '요소'들이 포함되어 있음 (실행단위들은 안드로이드 os에 의해서 각각 실행됨 -> 실행단위는 사실 각각의 class 이고 os에서 객체가 생성된 후 지정된 메서드가 호출되어 개발자가 작성한 코드를 동작 시킴)
안드로이드의 4대 구성요소
Activity : 눈에 보이는 화면을 관리
Service : 백그라운드 프로세싱을 관리 (눈에 보이지 않는 화면)
Broadcast Receiver : 단말기 안에서 이벤트가 발생하면 이벤트를 감지해 코드를 작동시킬 수 있는 운영 단위
Content Provider : 데이터를 공유하기 위해 사용하는 실행단위
=> 위 4대 구성요소는 하나의 클래스로 존재하고 os에 의해 상황이 맞는 클래스가 선택되고, 객체가 생성된 후 지정된 메서드가 호출되어 개발자가 작성한 코드를 동작 시킴
Activity
- 현재 화면 상에 보여지고 있는 화면을 관리하는 실행 단위
- 애플리케이션을 실행하면 자동으로 첫 화면을 관리하는 activity가 실행되면서 화면 나타남
💡Activity의 생명주기
onCreate() : 화면이 만들어진 후 최초에 초기화 하는 작업을 함. 액티비티가 생성될 때 딱 한 번 호출
onPause() : 화면에 팝업창 같은게 뜨면 호출, 액티비티는 일시 정시하고 팝업창을 닫으면 다시 onResume()이 호출되며 액티비티가 보임
onStop() : 화면이 완전히 보이지 않게 되면 호출
onRestart() : 화면이 다시 보이게 되면 호출되면서 onStrart() -> onResume() -> 액티비티 실행
* 액티비티가 화면에 보여지기 직전에 무조건 onResume()이 호출
// Activity가 생성될 때 자동으로 호출
// 화면 전환(가로,세로) 발생시 자동으로 호출되면서 새로운 화면 구현
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
setContentView(view)
Log.d("test","onCreate") // 메시지 구분을 위한 label(tag), 출력할 텍스트
}
// onCreate 에서 메서드 호출 이후에 자동 호출
// activity가 완전히 보이지 않는 정지상태가(일시정지x) 되었다가 활동상태로 돌아올 때 호출
override fun onStart() {
super.onStart()
Log.d("test","onStart")
}
// onStart 메서드가 호출된 이후에 자동으로 호출
// Activity가 일시 정지 되었다가 다시 돌아올때 호출
override fun onResume() {
super.onResume()
Log.d("test","onResume")
}
// Activity가 정지 상태가 되었다가 활동 상태로 돌아갈때 onStart 전에 호출
override fun onRestart() {
super.onRestart()
Log.d("test","onRestart")
}
// Activity가 일시정지 상태가 될 때 호출
// 화면상에서 완전히 사라지거나(정지상태로 넘어감) 현재 화면 위애 작은 팝업창 같은 것이 나타날때(일시정지) 호출
override fun onPause() {
super.onPause()
Log.d("test","onPause")
}
// Activity가 화면에서 사라질 때 호출
override fun onStop() {
super.onStop()
Log.d("test","onStop")
}
// 현재 Activity의 수행이 완전히 종료되어 메모리상에서 제거될때 호출
// 안드로이드의 back 버튼은 액티비티를 종료하는 것
override fun onDestroy() {
super.onDestroy()
Log.d("test","onDestroy")
}
'Android' 카테고리의 다른 글
[안드로이드/Activity] OnActivityResult 와 registerForActivityResult (0) | 2023.03.10 |
---|---|
[안드로이드/Activity] Intent 와 Activity 실행 (0) | 2023.03.10 |
[안드로이드/Menu] Popup Menu (0) | 2023.03.08 |
[안드로이드/Menu] Context Menu (0) | 2023.03.06 |
[안드로이드/Menu] Option Menu (0) | 2023.03.05 |