[안드로이드]4대 컴포넌트

[안드로이드]4대 컴포넌트

안드로이드의 4대 컴포넌트

  • 액티비티 : 화면을 구성하는 가장 기본적인 컴포넌트
  • 서비스 : 눈에 보이는 화면(액티비티)과 상관없이 백그라운드에서 동작하는 컴포넌트
  • 브로드캐스트 리시버(Broadacast Receiver) : 응용 프로그램이나 장치에 메세지를 전달하면 발생하면 반응
  • 콘텐트 프로바이더(Content Provider) : 응용 프로그램 사이에 데이터를 공유하기 위한 컴포넌트

출처: https://food4ithought.com/2018/09/26/android-application-components/

출처: https://nive.tistory.com/45

  • 인텐트(intent) : 안드로이드 4대 컴포넌트가 서로 데이터를 주고받기 위한 메세지 객체.




인텐트

단방향 명시적 인텐트(Explicit intent)

  • 타켓 컴포넌트(다른 액티비티)의 이름을 명확히 지정함
  • 사용자가 새로운 액티비티를 직접 생성/호출시 사용
1
2
3
4
//명시적인텐트를 사용하여 데이터 전달
//추가로 만든 secondActivity자바파일을 intent에 넣어서 mainActivity에 전달
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(i);

순서

  1. putExtra()로 인텐트에 데이터 넣어서
  2. startActivity() 메소드 사용하여 인텐드를 다른 액티비티로 전달
  3. getStringExtra(), getIntExtra(), getBooleanExtra()등으로 전달받은 데이터에 접근
  4. finish()로 끝내기

예시

  1. 메인액티비티

  2. 새컨액티비티




양방향 명시적 인텐트

  • 메인엑티비티에서 세컨드 엑티비티로 데이터를 넘긴 후 세컨드 엑티비티에서 다시 메인 엑티비티로 데이터를 돌려줄 때 사용
  • putExtra()로 인텐트에 데이터 넣어서 전달
  • getExtra()로 전달받은 데이터 떠냄

순서

  1. putExtra()로 인텐트에 데이터 넣어서
  2. startActivityForResult() 메소드 사용하여 인텐드를 다른 액티비티로 전달하기
  3. putExtra()에 메인액티비티에 돌려줄 인텐트를 생성하여 넣은 뒤
  4. setResult()로 돌려주기
  5. finish()로 끝내기
  6. 메인액티비티에서는 onActivityResult()메소드를 오버라이딩하고 오버라이딩된 메소드안에서 getStringExtra(), getIntExtra(), getBooleanExtra()등으로 전달받은 데이터에 접근하여 사용하기

예시

  1. 메인액티비티
  2. 세컨액티비티




암시적 인텐트(Implicit Intent)

  • 타켓컴포넌트의 클래스명이나 패지키명을 지정하지 않음
  • 약속된 액션을 지정하여 안드로이드에서 제공하는 기존 응용 프로그램을 실행하는 방법

출처: https://m.blog.naver.com/PostView.nhn?blogId=fnel7031&logNo=220705998997&proxyReferer=https:%2F%2Fwww.google.com%2F

전화걸기 예시

  1. AndroidManifest파일
  2. 메인액티비티




명시적 인텐트 vs 암시적 인텐트

출처: https://kutar37.tistory.com/entry/Android-INTENT-%EC%99%80-%EC%98%88%EC%A0%9C

참고