상세 컨텐츠

본문 제목

앱 개발 방법 - 구성 요소 활성화 (인텐트(Intent))

안드로이드 프로그래밍/앱 기본 요소

by green post it 2022. 1. 1. 10:06

본문

반응형

안드로이드 프로그래밍

인텐트(Intent)

구성 요소 유형 네 가지 중 세 가지(액티비티, 서비스, Broadcast Receiver)는 인텐트라는 비동기식 메시지로 활성화됩니다. 인텐트는 런타임에서 각 구성 요소를 서로 바인딩합니다.

이것은 일종의 메신저라고 생각하면됩니다. 즉 구성 요소가 어느 앱에 속하든 관계없이 다른 구성 요소로부터 작업을 요청하는 역할을 합니다.

 

인텐트는 Intent 객체로 생성되며, 이것이 특정 구성 요소(명시적 인텐트)를 활성화할지 아니면 구성 요소의 특정 유형(암시적 인텐트)을 활성화할지 나타내는 메시지를 정의합니다.

 

액티비티와 서비스의 경우, 인텐트는 수행할 작업을 정의하며(예: 무언가를 보거나 보내는 작업) 시작되는 구성 요소가 알아야 할 것이 많이 있기는 하지만 그중에서도 작업을 수행할 데이터의 URI를 지정할 수 있습니다.

 

예를 들어 이텐트는 액티비티에 이미지를 표시하거나 웹 페이지를 열라는 요청을 전달할 수 있습니다.

경우에 따라 결과를 수신하기 위해 액티비티를 시작할 수 있습니다.

 

이 경우 액티비티도 Intent 에서 결과를 반환합니다. 예를 들어 인텐트를 발행하여 사용자가 개인 연락처를 선택하게 하고 이를 반환할 수 있습니다.  반환 인텐트에는 선택된 연락처를 가리키는 URI가 포합됩니다.

 

Broadcast Receiver의 경우, 인텐트는 단순히 브로드캐스트될 알림을 정의합니다.

예를 들어 기기 배터리 잔량이 낮다는 것을 나타내는 브로드캐스트에는 배터리 부족을 나타내는 알려진 작업 문자열만 포합됩니다.

 

액티비티, 서비스, Broadcast Receiver와 달리 콘텐츠 제공자는 인텐트로 활성화되지 않습니다.

ContentResolver가 보낸 요청의 대상으로 지정되면 활성화됩니다.

콘텐츠 확인자는 콘텐츠 제공자와의 모든 직접적인 트랜잭션을 처리하여 제공자와의 트랜잭션을 수해하는 구성 요소가 그런 처리를 하지 않는 대신 ContentResolver 객체에서 메서드를 호출하게 합니다.

이렇게 되면 콘텐츠 제공자와 정보를 요청하는 구성 요소 사이에 추상화 계층이 하나 남습니다.(보안 목적)

 

각 유형의 구성 요소를 활성화하는 데는 각기 별도의 메서드가 있습니다.

 

1. 액티비티를 시작하거나 새로운 작업을 배정하려면 Intent를 startActivity() 또는 startActivityForResult()에 전달하면 됩니다.(액티비티가 결과를 반환하기를 원하는 경우)

 

2. Android 5.0(API 레벨 21) 이상에서는 JobScheduler 클래스를 사용하여 작업을 예약할 수 있습니다. 초기 Android 버전의 경우 Intent를 startService 에 전달하여 서비스를 시작할 수 있습니다.(또는 진행 중인 서비스에 새로운 지침을 전달할 수 있습니다) Intent 를 bindService()에 전달하여 서비스에 바인딩할 수도 있습니다.

 

3. sendBroadcast(), sendOrderedBroadcast(), 또는 sendStickyBroadcast() 와 같은 메서드에 Intent를 전달하면 브로드캐스트를 시작할 수 있다.

 

4. 콘텐츠 제공자에 쿼리를 수행하려면 ContentResolver 에서 query를 호출하면 됩니다.

 

구글 안드로이드 액티비티, 서비스, Broadcast Receiver, 콘텐츠 제공자를 활성화시키는지 인텐트가 무었인지 대략적으로 설명합니다.
반응형

관련글 더보기