[안드로이드 기초를 단단히] 1. Activity
안드로이드 구글 공식 문서를 공부, 정리하는 글.
Activity
모바일 환경에서 한 앱이 다른 앱을 호출할 때 다른 앱을 전체적으로 호출하는 것이 아니라 다른 앱의 액티비티를 호출한다고 한다. 여기서 액티비티는 어떤 역할을 하는지 짐작해보면 액티비티는 앱과 사용자의 상호작용을 위한 진입점 역할을 한다고 볼 수 있다.
진입적 역할을 하는 액티비티를 호출하면 앱이 화면 상에 나타나는 것을 볼 수 있다. 즉 액티비티는 UI를 그리는 창이다. 화면에서 보여지는 UI를 그린다는 뜻이다. 한 앱에 여러 화면이 있다는 건 액티비티가 여러 개 있다는 뜻이므로 앱은 여러 액티비티로 구성될 수 있다. 그 중 하나의 액티비티가 Main 액티비티로 지정될 수 있고 이 Main 액티비티에서 다른 액티비티들을 실행할 수 있다.
한 앱에서 액티비티들은 함께 작동하지만 각 액티비티는 다른 액티비티와 느슨한 결합을 한다. 최소한의 종속성을 가지고 있다고 한다. (관련 내용 더 공부하면서 알아가야할 것으로 보임)
또한 액티비티에는 화면에서 버튼 터치 등에 대한 이벤트를 처리할 수 있다. 즉 액티비티는 UI를 구성하는 요소로 화면 내의 이벤트 처리와 다른 앱과의 진입점 역할을 한다고 볼 수 있다.
앱의 액티비티를 사용하려면 manifest에 관련 정보를 등록하여야 한다.
manifest
manifest에 액티비티와 그와 관련된 특정 속성을 선언해야 앱에서 액티비티를 사용할 수 있다.
https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko
액티비티 생명 주기(Lifecycle)
액티비티는 생명 주기(Lifecycle)이라는 기간에 거쳐 여러 상태를 가진다. 앱이 실행될 때, 종료될 때, 다른 앱을 실행했을 때.. 등 액티비티의 상태가 바뀔 때 그 상태 변화에 맞는 콜백이 존재하고 그 콜백을 통해 어떤 작업을 할 지 정할 수 있다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
위의 경우 onCreate라는 콜백을 이용하여 setContentView(R.layout.activity_main)이라는 코드를 실행하도록 한다.
onCreate외에도 여러 콜백이 존재한다.
위의 그림은 액티비티가 실행되고 종료되기까지 여러 상태 변화를 알 수 있도록 액티비티 생명 주기를 간략하게 표현한 그림이다. onCreate(), onStart(), onResume(), onPaused(), onStop(), onDestroy()의 6개의 콜백을 확인할 수 있다.
onCreate()
시스템이 액티비티를 생성할 때 onCreate() 콜백이 실행된다. setContentView() 과 같은 액티비티의 필수적인 구성요소를 설정하는 것이 중요하다. 물론 setContentView()을 사용하지 않고 UI가 없는 액티비티로 사용해도 문제는 없지만 대부분의 경우 UI를 위해 setContentView()을 사용한다. onCreate()이 완료되면 onStart()가 뒤따른다.
onStart()
onStart()가 호출되면 액티비티가 사용자에게 표시된다. 그리고 액티비티를 foreground에 보내어 사용자와 상호작용이 가능하도록 준비한다. 이후 onResume() 메서드를 호출한다.
onResume()
액티비티가 재개 상태가 되면 onResume()을 호출한다. 앱의 UI가 포그라운드에 노출되고, 전화가 온다거나 다른 액티비티로 전환되는 등의 앱에서 포커스가 떠날 때까지 재개 상태에 머무르고 있다. 앱의 핵심 기능은 대부분 onResume()로 구현된다고 볼 수 있다.
onPaused()
onResume() 뒤에 따르는 콜백이다. 액티비티가 포커스를 잃고 일시 중지 상태가 될 때 시스템이 onPause()를 호출하는데 위의 onResume()에서 포커스가 떠날 때까지 재개 상태에 머무른다는 말과 같다고 볼 수 있다. 액티비티가 부분적으로 표시되고 있다면 일시 중지 상태였다가 onStop()을 부르는 중지 상태로 가거나 다시 재개 상태로 돌아갈 수 있다.
onStop()
액티비티가 더 이상 표시되지 않는다면 onStop()을 호출한다. 이후 액티비티가 종료되어 onDestroy()를 호출하거나 다시 시작되면 onRestart()를 호출한다.
onDestroy()
액티비티가 완전히 제거되기 전에 onDestroy() 콜백을 호출한다. 보통 액티비티의 모든 리소스를 해제하도록 구현된다.
[출처]
https://developer.android.com/guide/components/activities/intro-activities?hl=ko
'Android > 공부노트' 카테고리의 다른 글
[안기단] 2. Service (0) | 2022.04.12 |
---|---|
안드로이드 Jetpack Compose - 4 (0) | 2022.04.12 |
안드로이드 Jetpack Compose - 3 (0) | 2022.03.29 |
안드로이드 Jetpack Compose - 2 (0) | 2022.03.22 |
안드로이드 Jetpack Compose - 1 (0) | 2022.03.04 |
댓글