# 애플리케이션
- 한 개 이상의 액티비티들로 구성
- 액티비티들은 애플리케이션 안에 느슨하게 묶임(1에서 3으로, 2에서 3, 2에서 1로 가능)
# 액티비티
- 애플리케이션을 구성하는 빌딩 블록
- 사용자가 어떤 작업을 할 수 있는 화면을 가짐
- 안드로이드의 실행 단위
# 태스크
- 스택에 있는 액티비티
- 현재 실행되고 있는 액티비티는 스택의 제일 위에 있음
- 어떤 작업을 수행하기 위해 사용자가 상호작용하는 액티비티들의 그룹
# 액티비티 스택 (백 스택)
- Back 키를 누르면 현재 액티비티가 스택에서 제거되고 이전 액티비티로 되돌아감
- 사용자가 방문한 액티비티들은 어딘가에 기억
- 스택에 같은 액티비티 존재 가능
- 현재 실행되고 있는 엑티비티는 맨 위에 존재
# 인텐트
- 각각의 화면은 별도의 액티비티로 구현
- 하나의 액티비티에서 다른 액티비티로 전환하기 위해 사용
- 다른 액티비티를 시작하려면 액티비티의 실행에 필요한 정보들을 인텐트에 실어서 보내줌
- 매니페스트 파일에 액티비티들 등록
# 인텐트 종류
1. 명시적 인텐트(explicit intent) :
- 타깃 컴포넌트의 이름 지정
- Intent intent = new Intent(this, NextActivity.class) : 인텐트 객체에 실행하고 싶은 액티비티의 클래스 이름 지정
- startActivity(intent) : 인텐트 객체에 기술된 액티비티 시작
2. 암시적 인텐트(implicit intent) :
- 타깃 컴포넌트의 이름을 지정하지 않음
- “지도를 보여줄 수 있는 컴포넌트이면 어떤 것이라고 좋다”
- 다른 애플리케이션의 컴포넌트 구동하는 데 사용
- 최적의 컴포넌트 탐색
# 여러 페이지로 구성된 애플리케이션 작성
- 액티비티가 나오고 소멸
# 액티비티로부터 결과받기(정보 교환)
- startActivityForResult(in, COMMAND) : 결과값 전달
- onActivityResult(int requestCode, int resultCode, Intent data) : 값 전달 받음
- putExtra() : 엑스트라 필드에 값 저장
- getIntExtra() : 엑스트라 필드에서 값 추출
# 암시적인 인텐트 (implicit intent)
- 컴포넌트의 이름을 명확하게 모르는 경우 사용
- 자신이 원하는 작업만 기술
- 매니페스트 파일의 인텐트 필터와 암시적 인텐트를 비교하여 일치하는 컴포넌트 찾음
- 인텐트 안에 액션과 데이터 지정
# 인텐트 객체
– 매니페스트 파일에서 권한 부여
1. 컴포넌트 이름 : 인텐트를 처리하는 타깃 컴포넌트 이름(컴포넌트 이름과 패키지 이름)
- setComponent(), setClass(), setClassName()으로 설정
- getComponent()로 읽음
2. 액션 : 수행되어야 하는 작업
- ACTION_VIEW : 데이터를 사용자에게 표시
- ACTION_EDIT : 사용자가 편집할 수 있는 데이터를 표시
- ACTION_MAIN : 태스크의 초기 액티비티로 설정
- ACTION_CALL : 전화 통화 시작
- ACTION_SYNC : 모자일 장치의 데이터를 서버 상의 데이터와 일치
- ACTION_DIAL : 전화번호를 누르는 화면 표시
- setAction()로 설정 getAction() 으로 접근
3. 데이터 : 작업에 필요한 데이터
- URI 형식
- setData(), getData()로 인텐트 객체에 데이터 설정하고 접근
4. 카테고리 : 액션에 대하여 추가적인 정보 제공
- CATEGORY_BROWSABLE : 타깃 액티비티가 브라우저에 의해 시작되어서 이미지와 같은 데이터를 표시
- CATEGORY_GADGET : 액티비티가 다른 액티비티 안에 개짓으로 내장
- CATEGORY_HOME : 홈 화면을 표시하는 액티비티
- CATEGORY_LAUNCHER : 액티비티가 최상위 애플리케이션으로 론처에 나열
- CATEGORY_PREFERENCE : 타깃 액티비티가 환경 설정 패널
- addCategory() : 카테고리를 인텐트 객체 안에 위치
- removeCategory() : 이전에 추가된 카테고리 삭제
- getCategories() : 현재 인텐트 객체 안에 있는 모든 카테고리 반환
5. 엑스트라 : 타깃 컴포넌트로 전달 되는 추가적 정보
- 키-값(key-value)쌍으로 지정
'전공 공부 > 안드로이드프로그래밍' 카테고리의 다른 글
인터럽트 (0) | 2021.01.22 |
---|---|
고급 위젯과 프래그먼트 (0) | 2021.01.14 |
메뉴와 대화 상자 (0) | 2021.01.14 |
이벤트 처리 (0) | 2021.01.14 |
사용자 인터페이스 기초 (0) | 2021.01.14 |