인텐트와 액티비티

1 분 소요

💼📝🔑⏰ 📙📓📘📒🎓

액티비티 호출과 Intent 객체의 관계에 대해서 설명하시오.

💼 액티비티

  • 안드로이드 응용 프로그램을 구성하는 주요 단위(컴포넌트)의 하나임
    • 컴포넌트 : Activity, ContentProvider, BroadcastReceiver, Service 4개가 존재
  • 하나의 화면을 관리하는 주체
  • 사용자와의 인터페이스를 구성하지만 그 자체는 출력기능이 없어 View와 함께 사용해야한다.

📝실제 응용 프로그램

  • 실제 응용 프로그램에서는 한 화면에서 여러개의 복잡한 동작을 할 수 없다.
  • 기능별로 작업을 실행할 수 있는 여러개의 액티비가 필요함
  • 여러개의 액티비티 사이에서 통신할 수 있는 방법(Intent)이 필요함

💼 인텐트

  • 액티비티끼리 서로 호출하기 위해 필요한 ‘통신 장치’ 혹은 ‘메시지 전달 방법’이다.
  • 인텐트는 액티비티뿐만 아니라 BoradCastReceiver, Service, ContendProvider 등의 컴포넌트들이 수행해야 할 작업에 대한 정보를 가지며, 작업 결과를 반환하기 위해서도 사용된다.
  • 그림을 보여주는 액티비티를 호출한다면 출력해야 할 그림이 무엇인지 알려 주어야 한다.
  • 입력을 받는 액티비티를 호출할 경우에는 사용자가 입력한 정보가 무엇인지 반환해야 한다.
  • 함수의 인수나 반환값과 유사한 역할로 사용된다.

💼 엑티비티 호출

  • 액티비티를 호출하는 메소드 : void startActivity(Intent intent)
  • 인텐트 하나만을 인수로 취하는데 인텐트 안에 호출 상대, 요청 작업에 대한 정보가 들어있다.
  • 액티비티를 호출하기 전에 요청 작업에 대한 정보를 인텐트 객체에 먼저 정의해야한다.

액티비티 호출과 Intent 객체의 관계

  • 예를 들어 메인 액티비티에서 CALL이라는 버튼을 누를 때 서브 액티비티를 호출한다고 해보자!
  • CALL 버튼의 클릭 이벤트 핸들러에 액티비티 호출문을 작성해야 한다.
  • 액티비티를 호출할 때는 startActivity 메소드를 사용하며, 호출할 서브 엑티비티를 담고있는 Intent 객체를 생성하여 startActivity의 인수로 전달 해준다.
  • 이 과정만 있으면 에러가 난다. 이유는 보안상의 이유로 응용프로그램에 포함된 모든 액티비티는 반드시 매니페스트 파일에 등록 되어야 한다.
  • 매니페스트 파일에 등록되지 않은 액티비티는 존재하지 않는 것으로 취급되므로 startActivity 메소드가 서브 액티비티를 찾지 못하기 때문이다.
  • 모든 작업을 완료하면 안드로이드 OS가 서브 액티비티 클래스를 찾아서 화면에 뿌려준다.
  • 뿐만 아니라 호출 받은 서브 액티비티가 어떤 작업을 처리 하고 다시 메인 엑티비티로 데이터를 보내줄 수 있는 기능을 수행할 수 있다.
  • 간단하게 정리하면 액티비티 호출과 Intent 객체의 관계는, 액티비티 상호간의 메시지를 주고 받는 일을 하기 위해 인텐트 객체가 중간다리 역할을 하는 매우 중요한 객체다라고 생각하면 될 것이다.

댓글남기기