인텐트란

인텐트란 이러한 어플리케이션 구성요소(컴포넌트)간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 어떠한 컴포넌트를 호출하느냐에 따라 사용되는 대표적인 메소드로는 다음과 같다.

startActivity() - 새로운 액티비티를 화면에 띄울 때

startService() - 서비스와 관련

broadcastIntent() - 브로드캐스팅을 수행할 때

인텐트는 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)으로 구분할 수 있는데 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출될 대상을 확실히 알 수 있는 경우에는 명시적 인텐트 , 호출될 대상의 속성들을 지정했지만 호출될 대상이 달라질 수 있는 경우에는 암시적 인텐트라고 한다.

명시적 인텐트

Intent inent = new Intent(getApplicationContext() , TestActivity.class);
startActivity(intent) or startActivityForResult();

startActivity는 단순한 화면 전환이 필요할 때 사용하며 , startActivityForResult는 새로 띄운 액티비티로 부터 응답을 처리할 경우에 사용한다.

암시적 인텐트

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com"));
위와 같이 암시적 인텐트는 보통 액션과 데이터라는 속성으로 굿어되어있다. 이 두가지 속성말고도 Category , Type , Component , Extras라는 속성을 가진다. Component라는 속성을 지정할 경우는 명시적 인텐트이며 , 결국 암시적 인텐트는 Component 속성을 제외한 나머지 속성들로 구성되며 , 이러한 속성들에 부합하는 컴포넌트가 실행된다.

인텐트 필터

안드로이드 매니페스트 파일을 보면 , Intent-Filter라는 것이 있다. 예를 들어 컴포넌트A가 컴포넌트B로 인텐트를 보넀다고 하자. 명시적 인텐트라면 컴포넌트 B는 바로 ㅇ니텐트를 받았겠지만 암시적 인텐트라면 컴포넌트B는 이 인텐트가 자신의 속성과 부합하는지 확인을 해야할 것이다. 이러한 확인작업을 위해 Intent-filter라는 것이 존재한다. 인텐트 필터도 암시적 인텐트의 속성처럼 Action , data , category 필터라는 것을 가지고 있다. 


'웹 개발 > 안드로이드' 카테고리의 다른 글

GCM( Google Cloud Messaging ) 이란?  (0) 2017.04.10
Parcelable  (0) 2017.04.08
SurfaceView 와 SurfaceHolder  (0) 2017.03.14
ANR(Application Not Responding)  (0) 2017.03.14
Inflate  (0) 2017.03.13

+ Recent posts