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

- 인텐트(intent) : 안드로이드 4대 컴포넌트가 서로 데이터를 주고받기 위한 메세지 객체.
인텐트
단방향 명시적 인텐트(Explicit intent)
- 타켓 컴포넌트(다른 액티비티)의 이름을 명확히 지정함
- 사용자가 새로운 액티비티를 직접 생성/호출시 사용
1 | //명시적인텐트를 사용하여 데이터 전달 |
순서
- putExtra()로 인텐트에 데이터 넣어서
- startActivity() 메소드 사용하여 인텐드를 다른 액티비티로 전달
- getStringExtra(), getIntExtra(), getBooleanExtra()등으로 전달받은 데이터에 접근
- finish()로 끝내기
예시
메인액티비티

새컨액티비티

양방향 명시적 인텐트
- 메인엑티비티에서 세컨드 엑티비티로 데이터를 넘긴 후 세컨드 엑티비티에서 다시 메인 엑티비티로 데이터를 돌려줄 때 사용
- putExtra()로 인텐트에 데이터 넣어서 전달
- getExtra()로 전달받은 데이터 떠냄
순서
- putExtra()로 인텐트에 데이터 넣어서
- startActivityForResult() 메소드 사용하여 인텐드를 다른 액티비티로 전달하기
- putExtra()에 메인액티비티에 돌려줄 인텐트를 생성하여 넣은 뒤
- setResult()로 돌려주기
- finish()로 끝내기
- 메인액티비티에서는 onActivityResult()메소드를 오버라이딩하고 오버라이딩된 메소드안에서 getStringExtra(), getIntExtra(), getBooleanExtra()등으로 전달받은 데이터에 접근하여 사용하기
예시
- 메인액티비티

- 세컨액티비티

암시적 인텐트(Implicit Intent)
- 타켓컴포넌트의 클래스명이나 패지키명을 지정하지 않음
- 약속된 액션을 지정하여 안드로이드에서 제공하는 기존 응용 프로그램을 실행하는 방법
![]()
전화걸기 예시
- AndroidManifest파일

- 메인액티비티

![[OS/WINDOW]배포후 서버재시작에 batch와 윈도우 스케줄러 활용하기](https://cdn.pixabay.com/photo/2012/03/04/00/50/board-22098_960_720.jpg)
![[블로그]헥소테마에서 댓글기능 facebook에서 utterances로 변경하기](https://miro.medium.com/max/1600/1*aOv6h3h_v9PQWa03zGACnw.png)