Android

Activity

sujin7837 2021. 8. 19. 00:21
반응형

Activity

안드로이드 4대 구성요소

  • Activity
  • Service
  • Broadcast Receiver
  • Content Provider

 

Activity란?

현재 보이는 화면을 관리하는 실행 단위로, 애플리케이션을 실행하면 Activity가 실행되고 Activity가 관리하는 화면이 나타나게 됩니다.

 

Activity 생명주기

Activity 실행하기

Intent란?

안드로이드 4대 구성 요소들을 실행하기 위해서는 Intent라는 객체가 필요합니다. Intent는 실행하고자 하는 4대 구성 요소와 관련된 정보를 가지고 있습니다. 개발자는 실행하고자 하는 4대 구성 요소의 정보를 Intent에 담고 이를 안드로이드 OS에게 전달하면 안드로이드 OS에 의해 해당 구성 요소가 실행됩니다.

Activity 실행 및 종료

  • startActivity: 지정된 Intent에 담긴 정보를 토대로 Activity를 실행합니다.
  • finish: 현재 실행되어 있는 Activity를 종료합니다.

Back Stack

Activity에서 다른 Activity를 실행하면 이전 Activity는 Back Stack에 담겨 정지 상태가 되고 새로 실행된 Activity가 활동하게 됩니다. 새로 실행된 Activity가 제거되면 Back Stack에 있던 Activity가 다시 활동하게 됩니다.

메서드의 종류

  • startActivityForResult: Activity에서 다른 Activity를 실행하고 다시 돌아왔을 때 어떤 처리가 필요하다면, Activity를 실행할 때 startActivity가 아닌 startActivityForResult 메서드를 사용합니다.
  • onActivityResult: startActivityForResult 메서드를 이용해 Activity를 실행하고 돌아오면 자동으로 onActivityResult 메서드가 호출됩니다. 여기에서 필요한 작업을 처리합니다.

 

데이터 전달

Intent에 데이터 셋팅하기

  • Activity를 실행하기 위해 사용하는 Intent 객체에 데이터를 저장할 수 있습니다.
  • putExtra 메서드를 통해 데이터 저장이 가능하며 데이터가 저장된 Intent는 실행되는 Activity까지 전달됩니다.
  • 이를 통해 Intent에 저장된 데이터를 추출할 수 있습니다.
  • Intent는 Activity를 종료하고 돌아갈 때도 전달할 수 있습니다.

Intent에서 데이터 가져오기

  • 전달된 Intent에 저장된 데이터는 getXXXExtra 메서드를 통해 추출할 수 있습니다.
  • 이 메서드는 자료형 별로 이름이 다르므로 자료형에 맞는 메서드를 사용해야 합니다.

 

객체 전달하기

Parcelable 인터페이스

Parcelable 인터페이스는 전달 받은 쪽에서 객체를 복원할 때 필요한 정볼르 가진 부분을 의미합니다. Intent를 통해 객체를 전달할 때는 객체 직렬화를 해야 하는데, 안드로이드는 Parcelable 인터페이스를 사용합니다.

 

다른 애플리케이션의 액티비티 실행하기

Intent Filter

안드로이드의 4대 구성요소는 모두 AndroidManifest.xml 파일에 기록되어야 합니다. 이때 다른 애플리케이션이 실행할 수 있도록 하고자 한다면 Intent Filter를 이용해 이름을 설정해두면 됩니다. 애플리케이션이 단말기에 설치되면 안드로이드 OS는 지정된 IntentFilter의 이름을 확인하여 정리하고 실행 요청을 받으면 이를 실행할 수 있습니다.

 

ActivityAction

ActivityAction

안드로이드에서 제공되는 기본 애플리케이션 중 다른 애플리케이션이 사용할 수 있도록 제공되는 Activity들이 있습니다. 이들은 모두 공개되어 있는 이름이 제공되며 이를 통해 실행할 수 있습니다.

 

반응형

'Android' 카테고리의 다른 글

[Kotlin] 타입추론과 함수  (0) 2022.08.06
[Kotlin] 형변환과 배열  (0) 2022.08.06
[Kotlin] 변수와 자료형  (0) 2022.08.06
안드로이드의 메뉴  (0) 2021.08.18
안드로이드의 권한  (0) 2021.08.18