[안드로이드]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파일
- 메인액티비티