명시적 Intent 로 Activity 시작
인텐트 쓰는 경우
Intent는 메시징 객체다. 다른 앱 구성 요소(안드로이드 4대 컴포넌트)로부터 작업을 요청하는데 사용할 수 있다.
- 액티비티 시작
- 서비스 시작
- 브로드캐스트 전달
다른 화면으로 전환 하면서 데이터도 넘기는법 (Activity 전환)
인텐트는 명시적 인텐트와 암시적 인텐트로 나뉘는데 명시적 인텐트는 앱 내의 특정 액티비티나 서비스 등 특정한 앱 구성 요소를 시작하는 데 사용하는 인텐트이다. 명시적 인텐트를 생성하려면 Intent 객체에 대한 구성 요소 이름을 정의하고, 나머지는 선택사항이다. 여기서는 명시적 인텐트만 다룬다.
이동하고자 하는 액티비티의 정보를 담은 인텐트 객체 생성
putExtra 로 파라미터를 담아준다. (스프링의 ModelAndView 객체 .addAttribute와 비슷..)
그러곤 startActivity메서드에 인자로 해당 인텐트 객체 넘겨주며 해당 액티비티를 실행한다.
이때 AndroidManifest.xml 에 등록해둔 액티비티가 아닐경우 오류가 발생한다.
메니페스트 파일은 앱이 설치될 안드로이드 운영체제에
"이 어플이 이렇게 구성되어있고, 이런 기능을 사용할 것입니다."라는걸 알리는 설계도 역할을 한다.
그리고 인텐트 객체가 액티비티를 찾을때 바로 해당 액티비티로 전환하는게 아니라 안드로이드 시스템에서 이 메니페스트를 참조하여 앱을 찾고 실행하기 때문에 반드시 매니페스트에 액티비티를 명시해 두어야한다.
전환된 액티비티에서는 파라미터를 받을때 getExtra해주면된다.
파라미터의 타입에 따라서 getIntExtra, getStringExtra..등 다양하게 사용하면 된다.
인텐트를 통해 시작할 액티비티를 찾는 과정은 이렇게 된다. 안드로이드 시스템에선 인텐트필터부터 찾는다.
참조 : https://developer.android.com/guide/components/intents-filters?hl=ko#kotlin