계발자 블로그
[Android] Intent 사용하기 본문
intent는 안드로이드 개발 시 Activity간의 화면 이동과 함께 데이터 전달하는 목적으로 많이 사용하게 됩니다
intent에 대해 알아봅시다!!
그럼 intent가 무엇이냐면
안드로이드 공식 문서에는
'Intent는 메시징 객체로, 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있습니다'
이렇게 정의 되어있습니다.
intent를 사용하는 사례는 크게 3가지가 있습니다
액티비티 시작
액티비티의 새 인스턴스를 시작하려면 intent를 startActivity()로 전달하면 됩니다.
액티비티가 완료되었을 때 결과를 수신하려면 startActivityForResult()를 호출하면 됩니다.
액티비티는 해당 결과를 이 액티비티의 onActivityResult() 콜백에서 별도의 Intent 객체로 수신합니다.
서비스 시작
Service는 사용자 인터페이스 없이 백그라운드에서 작업을 수행하는 구성 요소입니다
Android 5.0(API 레벨 21) 이상부터는 JobScheduler로 서비스를 시작할 수 있습니다.
브로드캐스트 전달
브로드캐스트는 모든 앱이 수신할 수 있는 메시지입니다.
Intent를 sendBroadcast() 또는 sendOrderedBroadcast()에 전달하면 다른 앱에 브로드캐스트를 전달할 수 있습니다.
인텐트 유형
인텐트에는 두 가지 유형이 있습니다
명시적 인텐트
명시적 인텐트는 일반적으로 앱 안에서 구성 요소를 시작할 때 씁니다.
시작하고자 하는 액티비티 또는 서비스의 클래스 이름을 알고 있기 때문입니다.
예를 들어, 사용자 작업에 응답하여 새로운 액티비티를 시작하거나 백그라운드에서 파일을 다운로드하기 위해 서비스를 시작하는 것 등이 여기에 해당됩니다.
암시적 인텐트
암시적 인텐트는 특정 구성 요소의 이름을 대지 않지만,
그 대신 수행할 일반적인 작업을 선언하여다른 앱의 구성 요소가 이를 처리할 수 있도록 해줍니다.
예를 들어 사용자에게 지도에 있는 한 위치를 표시하고자 하는 경우,
암시적 인텐트를 사용하여 해당 기능을 갖춘 다른 앱이 지정된 위치를 지도에 표시하도록 요청할 수 있습니다.
그림을 보면
Activity A가 실행 되면 intent를 통해 startActivity()가 실행이 되고 Android System으로 넘어가게 됩니다.
그럼 Android System은 앱에 있는 다른 Activity를 찾습니다 manifast에서 찾게 되는데요
액티비티를 manifast에 추가하지 않는다면 Android System에서 다른 액티비티를 찾지 못해 에러가 나는 것입니다.
액티비티를 찾아서 Activity B로 Activity A에서 intent에 함께 넘긴 데이터를 onCreate()에 전달해주는 것입니다.
이제 직접 사용해 봅시다.
메인 액티비티입니다
다른 액티비티로 전달 해줄 데이터로 EditText를 넣었고
버튼으로 액티비티 이동을 해줄겁니다.
여기는 결과 화면을 볼 ResultActivity입니다
메인 액티비티의 EditText를 받아서 보여줄 TextView를 넣고
다시 메인 액티비티로 이동하기 위해 버튼을 넣어줍니다
메인 액티비티 코드입니다
단순히 텍스트 값과 화면 전환만 하기 때문에 코드가 간단합니다,,,
putExtra로 key값과 value값을 intent에 넣어줘서 전달해주는 겁니다
만약 보낼 데이터가 없다면 안해주셔도 됩니다
startActivity()를 통해서 intent를 실행시켜 줍니다
결과 화면을 보여주는 ResultActivity입니다.
resultText라는 상수에 메인 액티비티에서 받은 텍스트 값을 넣어줍니다
받을때는 getStringExtra를 사용합니다 만약 정수형이라면 getIntExtra겠죠?ㅎㅎ
그리고 텍스트뷰에 .text로 resultText에 있는 값을 getString을 해주면 됩니다
.
.
.
자 그럼 잘될리가 없습니다
위에서 설명했듯이 우리는 방금 manifast에 ResultActivity를 추가해주지 않았어요!
이렇게 intent-filter 밑에
<activity android:name=".ResultActivity"/>
작성해줍니다
액티비티 이름 앞에 . 까지
그러면
이렇게 잘 되는 것을 확인할 수 있습니다!!
'Android' 카테고리의 다른 글
[Android] Retrofit2 (0) | 2022.01.12 |
---|---|
[Android] ViewPager2 (0) | 2021.12.29 |
[Android] RecyclerView 사용하기 (0) | 2021.11.30 |
[JetPack] Navigation (0) | 2021.11.01 |
[JetPack] AAC ViewModel (0) | 2021.10.28 |