hmk run dev

안드로이드 INTENT란? 본문

android

안드로이드 INTENT란?

hmk run dev 2022. 2. 12. 08:44

Intent (스프링의 @Autowird와 비슷...??)

Component를 실행하기 위해 시스템에 넘기는 정보

기본적으로 안드로이드는 component기반이고 이때 내부적으로 개발자가 작성한 

Activity 같은 클래스들이 아래와 같이 동작하게 된다.

위 4개의 영역은 각각각의 class지만 상호 결합되지 않은 상태로 실행이 되고.

이것들은 안드로이드에선 component라고 할 수 있다.

 

안드로이드 애플리케이션을 네 가지 기본요소에는 Activity, Service, Broadcast Reiceiver, Content Provider가 있다.

이때 인텐트(Intent)란 이러한 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다.

인텐트는 안드로이드 개발 시 매우 빈번하게 사용되는 요소인데 예를 들어 화면 전환 동작원리를 살펴보면

 

인텐트는 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 담고 있으며, 이 정보에는 호출되는 컴포넌트 B의 이름이 명시적으로 표시되거나, 속성들이 암시되기도 한다.

 

또한 A에 의해 호출된 B가 A로 어떤 결과를 전달할 때고 인텐트가 사용된다.

어떠한 컴포넌트를 호출하냐에 따라 사용되는 대표적인 메소드로는 다음과 같은 것들이 있다.

 

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

startService() - 서비스 관련

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

 

인텐트는 명시적 인텐트와 암시적 인텐트로 구분할 수 있는데

 

명시적 인텐트

- 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출될 대상을 확실히 알 수 있음

- 실행하고자하는 Component 클래스명을 Intent에 담는 방법.

주로 동일 App에서 다른 component를 실행시킬때 사용한다. 

public class MainActivity extends Activity implements View.OnClickListener{
Button button;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     button = (Button)findViewById(R.id.button);
     button.setOnClickListener(this);
     }

     @Override
     public void onClick(View v) {
     Intent intent = new Intent(getApplicationContext(),SecondActivity.class);
     // SecondActivity 인텐트를 받아 화면전환 
     startActivity(intent);
     }
}

암시적 인텐트

- 호출될 대상이 달라질 수 있는 경우

- 다른 응용 프로그램의 컴포넌트를 호출할때 사용된다.

쉽게 말해 내가작성한 컴포넌트(코틀린 클래스)가 아닌 다른 프로그램의 컴포넌트를 호출해서 사용할때!

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.naver.com"));
startActivity(intent);
....
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("tel:010-0000-0000"));
startActivity(intent);

안드로이드 OS에는 인텐트 정보를 참조하여 호출할 컴포넌트를 검색하는 정교한 알고리즘이 설계되어 있는데

적절한 컴포넌트를 찾기 위해 설치된 모든 응용 프로그램의 컴포넌트를 조사한다.

 

 

 

 

출처

https://www.crocus.co.kr/1521

 

Android에서 Intent란?

Intent Component를 실행하기 위해 시스템에 넘기는 정보이다. 즉, 실행하고자 하는 컴포넌트 정보를 담은 Intent구성 -> 시스템 -> Intent 정보를 통해 그에 맞는 Component를 실행하게 된다. 안드로이드는 C

www.crocus.co.kr

 

'android' 카테고리의 다른 글

안드로이드 어플리케이션의 네 가지 기본요소  (0) 2022.02.12
앱과 Firebase  (0) 2022.02.06
RecycleView  (0) 2022.02.06
안드로이드 Activity 라이프 사이클  (0) 2022.02.06
안드로이드 데이터 관리 ROOM  (0) 2022.02.06
Comments