안드로이드 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 안드로이드 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
인텐트란?
컴포넌트 간의 전환을 위해서는 시스템에 다른 컴포넌트의 생성을 요청해 전환합니다. 그렇다면 시스템에 어떻게 다른 컴포넌트의 생성을 요청할까요? 요청에 사용되는 메시징 객체를 우리는 인텐트라고 부릅니다.
우리는 코드를 작성해 인텐트 객체를 생성하고 시스템에 전달함으로써 실행할 컴포넌트의 정보를 시스템에 전달하며, 시스템에서는 해당 인텐트 메시지를 수신한 뒤 내용을 분석해 요청에 맞는 컴포넌트를 실행합니다.
안드로이드 메니페스트
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F83c75a39-3aba-4ba4-a792-7aefe4b07895%252Faa457c56-b6f5-43a7-b129-ad21240dd31d%252FUntitled.png%3Ftable%3Dblock%26id%3Dbb46f295-cb1e-4a6c-8f4f-b98f38073755%26cache%3Dv2&w=3840&q=75)
인텐트에 대해 알아보기 이전에 우선 안드로이드 메니페스트라는 파일을 살펴봅시다. 안드로이드 메니페스트 파일은 안드로이드 프로젝트에 반드시 포함되어야 하는 파일로 앱의 패키지 이름이나, 사용되는 컴포넌트, 앱의 권한 등 앱에 대한 정보들을 담고 있는 파일입니다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F83c75a39-3aba-4ba4-a792-7aefe4b07895%252F7ceda951-8d65-4b62-bec0-efd6ee97baf5%252FUntitled.png%3Ftable%3Dblock%26id%3D41590f5f-cddd-4673-926a-43559a5c88ad%26cache%3Dv2&w=3840&q=75)
우리는 인텐트에 대해 알아보기 위해 매니페스트 파일에 사용되는 컴포넌트의 정보가 담겨있다는 점에 주목해야 합니다. 안드로이드 앱은 여러개의 컴포넌트들로 이루어질 수 있고, 각 컴포넌트들은 이름을 가지고 있으며, 이름은 매니페스트 파일에 선언된다. 이것이 우리가 인텐트를 통해 컴포넌트를 실행할 수 있게하는 첫 시작점입니다.
명시적 인텐트란?
위에서 말했듯 안드로이드 앱 내의 모든 컴포넌트는 각자 이름을 가지고 있습니다. 명시적 인텐트란 이러한 컴포넌트의 이름을 직접적으로 지정해 인텐트를 작성하는 방식을 말합니다. 이러한 방식은 특정 액티비티나 서비스를 실행하는 작업을 수행해야할 때 사용합니다. 명시적 인텐트는 컴포넌트를 정확하게 지정해 실행하기 때문에 주로 애플리케이션 내부에서 활용됩니다.
암시적 인텐트란?
암시적 인텐트는 명시적 인텐트와는 반대로 실행해야하는 대상을 직접적으로 지정하지 않는 방식을 말합니다. 대상을 직접 지정하지 않는다면 과연 어떤 방식으로 대상을 찾아 실행하는 걸까요?
이를 알기 위해서는 앞서 말했던 인텐트 필터에 대해 알아야 합니다. 인텐트 필터는 해당 컴포넌트가 어떤 인텐트 호출에 대해 응답할 수 있는지 시스템에 알려주는 역할을 합니다.
예를 들어 우리가 카메라 앱을 만들어 인텐트 필터에 카메라 액션에 대해 응답 할 수 있다는것을 명시합니다. 이후 다른 앱에서 카메라가 필요한 작업을 실행하기 위해 인텐트 메시지를 시스템에 보낼경우 우리가 만든 카메라 앱도 이에 응답해 실행될 수 있다고 나오게 되는 것입니다.
암시적 인텐트는 컴포넌트를 실행하기 위해 필요한 컴포넌트가 수행해야하는 작업을 메시지에 명시합니다. 시스템에서는 인텐트 메시지를 수신한 뒤 인텐트 필터에 해당 작업이 가능하다고 명시된 앱들을 찾아 실행시킵니다. 그렇다면 해당 작업을 수행할 수 있는 앱이 여러 개라면 어떻게 될까요?
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F83c75a39-3aba-4ba4-a792-7aefe4b07895%252F3d57ed64-b798-417b-8f72-d969e8cb051a%252FUntitled.png%3Ftable%3Dblock%26id%3De3e5bbb3-73a4-41fb-8062-c8c196fc7c8f%26cache%3Dv2&w=3840&q=75)
바로 위와 같은 상황이 됩니다. 해당 작업을 수행할 수 있는 모든 앱의 목록이 보여지며, 사용자의 선택에 따라 실행될 앱이 결정됩니다.
인텐트 추가기능
인텐트는 컴포넌트간에 실행을 요청하는 메시징 객체이기도 하지만, 컴포넌트간에 데이터를 공유하기 위해 사용하기도 합니다. 인텐트 객체에는 Extra Data라는 것을 통해 간단한 타입의 데이터를 담을 수 있고, 인텐트 메시지가 시스템에 요청되면서 컴포넌트가 실행될 때 이를 전달할 수 있습니다. 전달받는 컴포넌트에서는 인텐트 메시지에 추가된 Extra Data에서 원하는 데이터를 가져와 사용할 수 있습니다.
내일배움캠프는 개발에 필요한 핵심만 배웁니다
지금까지 꼭 필요한 안드로이드 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 안드로이드 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
CREDIT
글 | 배영수 내일배움캠프 수료생
편집 | 정효재 팀스파르타 에디터
취업 준비, 어디서부터 시작해야 할지 모르겠다면?
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
Share article
Subscribe to our newsletter