안드로이드 학습 - Intent
📚 Intent
👀 intent란?
intent
는Activity
의 메시지 객체입니다.- 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있습니다.
- 액티비티 시작
- 다른 액티비티로 이동
- 다른 액티비티로 데이터 전달
- 서비스 시작
- 브로드캐스트 전달
- 액티비티 시작
- 이 글에서는 Activity 이동과 데이터 전달에 대해서만 설명하겠습니다.
👀 Activity 실행
- 현재 액티비티에서 다른 액티비티를 실행(이동)하기 위해서는
startActivity()
메서드를 호출해야 합니다. - 하지만
어떠한 의도(intent)를 가지고 액티비티를 시작(start)
할 건지 정의해야 합니다. - 따라서 아래의 코드와 같이
현재 액티비티(this)에서 두번째 액티비티(SecondActivity::class.java) 실행
이라고 실행할 액티비티를명시적인 의도
를 가지고 호출합니다. (여기서 ::class.java 는 자바(코틀린)파일에 대한 참조를 뜻합니다.)
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
👀 Intent 종류
👉 명시적 인텐트 (Explicit intents)
SecondActivity 라는 액티비티를 실행한다.
- 앱이 작업을 수행할 Activity을 명확하게 알고 있을 때 사용합니다.
- 인텐트를 충족하는 애플리케이션이 무엇인지 지정합니다.
- 이를 위해 대상 앱의 패키지 이름 또는 완전히 자격을 갖춘 구성 요소 클래스 이름을 제공합니다.
- 명시적 인텐트는 일반적으로 앱 안에서 구성 요소를 시작할 때 씁니다. 시작하고자 하는 액티비티 또는 서비스의 클래스 이름을 알고 있기 때문입니다.
- 예를 들어, 사용자 작업에 응답하여 새로운 액티비티를 시작하거나 백그라운드에서 파일을 다운로드하기 위해 서비스를 시작하는 것 등이 여기에 해당됩니다.
👉 암시적 인텐트 (Implicit intents)
사진 찍기 라는 작업을 수행할 액티비티를 실행한다.
- 특정 구성 요소의 이름을 대지 않지만, 그 대신 수행할 일반적인 작업을 선언하여 다른 앱의 구성 요소가 이를 처리할 수 있도록 해줍니다.
- 예를 들어 사용자에게 지도에 있는 한 위치를 표시하고자 하는 경우, 암시적 인텐트를 사용하여 해당 기능을 갖춘 다른 앱이 지정된 위치를 지도에 표시하도록 요청할 수 있습니다.
👀 다른 Activity로 데이터 전달
- 다른 액티비티에 데이터를 전달하는 작업은
실행할 Activity 정보
와는 다르게 필수적인 작업이 아닙니다. 그래서extra
라는 이름이 붙는 메서드를 호출합니다. - 전달되는 데이터는
Bundle
객체로key - value
구조로 전달됩니다.
val intent = Intent(this, SecondActivity::class.java).apply {
putExtra("name", myName)
putExtra("number", myNumber}
startActivity(intent)
👀 다른 Activity로부터 데이터 수신
- 다른 액티비티로부터 데이터를 받기 위해서는 어떤 타입의 데이터인지 명확하게 표시해야 합니다. 따라서
Bundle.get데이터타입(key값)
을 통해 데이터를 받을 수 있습니다.
val myName = arguments?.getString("name")
val myNumber = arguments?.getInt("number")
- 여기서
arguments
는Bundle
객체입니다.
👀 Activity로부터 데이터 가져오기
startActivityForResult()
👀 참고 사이트
- 공식 문서
- 블로그
Author And Source
이 문제에 관하여(안드로이드 학습 - Intent), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cherrylime69/안드로이드-학습-Intent저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)