인텐트란
인텐트란 이러한 어플리케이션 구성요소(컴포넌트)간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 어떠한 컴포넌트를 호출하느냐에 따라 사용되는 대표적인 메소드로는 다음과 같다.
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 필터라는 것을 가지고 있다.