Programming/Android

[UMC 3rd/Android] Intent : Component 사이의 통신

코딩뽀시래기 2022. 9. 27. 23:50
728x90

[ 📌Intent가 Component 사이의 통신을 촉진하는 기본적인 사용 사례 ]

 

1️⃣ 액티비티 시작

- Activity는 앱 안의 단일 화면을 나타냄.

- Activity의 새 인스턴스를 시작하려면 Intent를 startActivity()로 전달

- Intent는 시작할 Activity를 설명하고 모든 필수 데이터를 담음.

- Activity가 완료되었을 때 결과를 수신하려면, startActivityForResult()를 호출

- Activity는 해당 결과를 이 Activity의 onActivityResult() 콜백에서 별도의 Intent 객체로 수신

 

2️⃣ 서비스 시작

- Service는 사용자 인터페이스 없이 백그라운드에서 작업을 수행하는 구성 요소

- Android 5.0(API 레벨 21) 이상부터는 JobScheduler로 서비스를 시작할 수 있음.
- Android 5.0(API 레벨 21) 이하 버전은 Service 클래스의 메서드를 사용하면 서비스를 시작할 수 있음.

- Service를 시작하여 일회성 작업을 수행하도록 하려면(예: 파일 다운로드) Intent를 startService()에 전달

- Intent는 시작할 Service를 설명하고 모든 필수 데이터를 담고 있습니다.
- Service가 클라이언트-서버 인터페이스로 디자인된 경우, 다른 Component로부터 Service에 바인딩하려면 Intent를 bindService()에 전달

 

3️⃣ 브로드캐스트 전달

- 브로드캐스트는 모든 앱이 수신할 수 있는 메시지

- 시스템은 시스템이 부팅될 때 또는 기기가 충전을 시작할 때 등 시스템 이벤트에 대한 다양한 브로드캐스트를 전달

- Intent를 sendBroadcast() 또는 sendOrderedBroadcast()에 전달하면 다른 앱에 브로드캐스트를 전달할 수 있음.

 

 

[ 📌Intent 유형 ]

 

1️⃣ 명시적 인텐트

- 인텐트를 충족하는 애플리케이션이 무엇인지 지정

- 이를 위해 대상 앱의 패키지 이름 또는 완전히 자격을 갖춘 Component 클래스 이름을 제공

- 명시적 인텐트는 일반적으로 앱 안에서 Component를 시작할 때 사용(시작하고자 하는 액티비티 또는 서비스의 클래스 이름을 알고 있기 때문)

- 예를 들어, 사용자 작업에 응답하여 새로운 액티비티를 시작하거나 백그라운드에서 파일을 다운로드하기 위해 서비스를 시작하는 것 등이 여기에 해당됨

 

2️⃣ 암시적 인텐트

- 특정 Component의 이름을 대지 않지만, 그 대신 수행할 일반적인 작업을 선언하여 다른 앱의 Component가 이를 처리할 수 있도록 해줌.

- 예를 들어, 사용자에게 지도에 있는 한 위치를 표시하고자 하는 경우, 암시적 인텐트를 사용하여 해당 기능을 갖춘 다른 앱이 지정된 위치를 지도에 표시하도록 요청 가능

728x90