춤추는 개발자

[AOS] 안드로이드의 통신 수단 Intent 본문

Android/study_til

[AOS] 안드로이드의 통신 수단 Intent

Heon_9u 2021. 5. 21. 15:11
728x90
반응형

 Intent란 안드로이드의 컴포넌트끼리 서로 통신할 수 있는 수단이자, 안드로이드 OS와 개발자를 이어주는 중요한 개념입니다.

 

 

1. Intent

 안드로이드는 컴포넌트 기반으로 개발되어 실행되는데, 이때 서로 다른 스레드와 메모리 공간, 생명 주기를 가지며 동작합니다. 이러한 컴포넌트들을 이어주는 역할을 하는 것이 Intent입니다. Intent의 가장 대표적인 기능은 한 Activity에서 다른 Activity를 실행시켜주는 역할을 합니다.

 

 이미 실행 중인 어플리케이션에서 안전하게 다른 Activity의 스레드를 동작시켜주기 위해서는 기존 Activity를 중지하거나 제거한 후, 안전하게 다른 Activity를 생성해야 합니다. Intent는 이러한 역할을 수행할 뿐만 아니라, 다른 Activity에게 데이터를 전달할 때도 사용됩니다.

 

 MainActivity에서 SubActivity를 실행하면서 데이터를 전달하는 대략적인 프로세스를 나타내는 그림입니다. MainActivity에서는 SubActivity를 실행하기 위해서는 가장 먼저, Intent 객체를 생성해야 합니다. 이후, 넘겨주기 위한 데이터를 Intent 객체에 담아 보내기 위해 putExtra() 함수를 사용합니다. 인자 정보는 두 개로 하나는 데이터를 식별할 수 있는 key값, 두 번째 인자는 실제 데이터(변수 또는 실제 값)를 넘겨주게 됩니다.

 

 MainActivity로부터 전달받은 데이터를 SubActivity에서 직접 사용하려면, 가장 먼저, 자신을 호출한 MainActivity에서 생성한 인텐트 객체를 getIntent() 함수를 통해 가져옵니다. 이후, Type에 맞는 getxxxExtra() 함수를 호출하여 데이터를 가져올 수 있습니다.

 

 

2. PendingIntent

 PendingIntent는 Intent를 감싸는 Wrapper 클래스로, 기본 목적은 다른 어플리케이션(다른 프로세스)의 권한을 허가하여 가지고 있는 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 만드는 것입니다.

 

PendingIntent의 용도

 - Notification(상태창의 알림)은 NotificationManager의 intent를 실행시켜 작동합니다. 즉, 다른 프로세스에서 수행하기 때문에 PendingIntent가 필요합니다.

 - AlarmManager(알람)를 통해 지정된 시간에 Intent가 시작되도록 하려면 PendingIntent를 사용해야 합니다.

 

 

728x90
반응형