nonani

안드로이드 4대 구성요소 - Activity 본문

안드로이드

안드로이드 4대 구성요소 - Activity

nonani 2024. 5. 6. 17:24

안드로이드는 Activity, Service, Broadcast Receiver, Content Provider로 구성되어있습니다.

유저나 시스템이 앱에 접근하기 위해서는 이 4가지 구성요소를 진입점으로써 사용해야하는데요. 

각 컴포넌트는 서로 다른 목적과 라이프사이클을 가지고 있습니다. 이번 글에서는 이 4가지 구성요소 중 Activity에 대해서 알아보겠습니다.

 


엑티비티(Activity)

Activity는 사용자에게 유저 인터페이스를 제공합니다. 즉, 사용자와 상호작용하기 위한 진입점인 것입니다.

엑티비티는 UI를 제공하고 이를 통해 사용자와 상호작용하는 것입니다. 대다수의 앱은 여러 화면으로 구성되어있는데 예를 들어 대학생들이 많이들 사용하는 에브리타임 앱을 예로 들면 로그인 화면이 있고, 메인화면, 자유게시판 화면, 글쓰기 화면, 글 세부내용을 확인하는 화면 등 여러가지의 화면으로 구성되어있는 것을 알 수 있습니다.

여러 화면으로 구성되어 있다는 것, 즉 여러 Activity로 구성되어있음을 알 수 있습니다.

 

엑티비티를 생성하는 방법

1. xml file을 만들어 버튼 등 화면에 보여주고 싶은 UI를 나타내어줍니다.

2. .kt(.java) Class file 만들어 xml에 만들어 놓은 UI에 기능을 연결하여 여러 동작이 가능하게 할 수 있습니다.

 직접 xml, class 등의 파일을 만들어준 경우 manifest 파일(해당 파일의 설명은 따로 포스팅하겠습니다.)에 해당 엑티비티를 추가해줘야 합니다.

안드로이드 스튜디오에서는 new-activity로 엑티비티를 추가해주면 manifest에 새로 생성된 activity를 자동으로 추가해줍니다.

 

엑티비티의 생명 주기(Activity Lifecycle)

이렇게 생성한 Activity는 아래와 같은 생명주기가 있습니다.

그림이 복잡해보일 수 있으나 서로 반대가 되는 메서드를 기준으로 이해하면 기억하기 쉽습니다.

1. OnCreate()와 OnDestory()

시스템이 엑티비티를 처음 생성할 때 가장 먼저 실행된다. 즉, 전체 주기에서 가장 먼저 한 번만 발생하는 메서드입니다. 

아래의 예시처럼 OnCreate()를 정의해주어 엑티비티가 생성된 후에 view 생성하는데 view에 있는 ui를 activity_main.xml에 작성해둔 ui대로 보여줄 수 있도록 불러와 메모리에 로드하는 것을 확인할 수 있습니다. 여기서 

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

반면의 OnDestory()의 경우, 사용자에 의해  finish(), onBackPressed()와 같은 메서드가 호출되었을 때, 또는 시스템이 메모리부족등의 이유로 프로세스를 종료할 때 호출되는 메소드이다.

2. OnStart()와 OnStop(), OnRestart()

Activity가 OnCreate가 종료된 후 화면에 표시되기 직전에 호출되는데,OnCreate와 달리 Lifecycle동안 여러번 호출될 수 있습니다.

상응하는 함수로 OnStop()이 있는데 사용자가 앱을 시작한 후 기기 홈화면으로 돌아오는 경우, 또는 다른 액티비티로의 이동이 있는 경우에 호출됩니다. 해당 상태에서 다시 Activity가 호출되면 OnRestart() 메서드가 호출되는 것이고 그림처럼 OnRestart() 메서드가 OnStart()를 호출합니다.

3. OnResume()과 OnPause()

onResume()은 엑티비티가 화면에 보여지는 직후에 호출되는, 즉 OnStart()메서드가 호출된 후에 호출되는 메서드입니다. 현재 Activity가 사용자에게 포커스인 되어있는 상태에 호출되어 사용자와 상호작용하는 것입니다. 

이에 상응한는 OnPause()의 경우 현재 Activity가 사용자에게서 포커스아웃할 때, 즉 화면에 보여지지 않은 직후에 호출되는 메서드입니다.대개 이때 데이터를 저장하는 등이 과정이 이루어지나 다른 Activity가 호출되기 전에 실행되기 때문에 무거운 작업을 수행하게 되면 성능이 저하되어 프레임 드랍과 같은 문제가 생길 수 있으니 주의해야합니다.

 

 

마무리

여기까지 Activity에 대해서 필수적이고 대략적인 부분을 알아보았습니다. 각 과정에서 상세한 내용, OnCreate에서 이루어지는 data binding, OnPause되었을때 데이터를 stroe하는 등의 과정 등에 대한 예시는 따로 기회가 되면 포스팅으로 다뤄보겠습니다.

 

 

 

 

'안드로이드' 카테고리의 다른 글

Kotlin에서의 산술연산  (0) 2023.03.07
패키지 폴더  (0) 2023.03.07