반응형
인텐트
-
컴포넌트 들 간에 작업요청 및 데이터를 전달하는 메시지
-
작업요청 컴포넌트는 인텐트를 보내기 위해 다음 메서드 호출
-
startActivity()
-
startService()
-
수신 컴포넌트
-
인텐트 필터 intent filter 를 통해 특정 인텐트를 수신하고 작업을 수행
인텐트의 생성 주체
-
안드로이드시스템
-
안드로이드 프레임워크
-
애플리케이션
인텐트 전송메서드
-
컴포넌트 별로 별도의 메서드 존재
-
액티비티
-
Context.startActivity()
-
Activity.startActivityForResult()
-
서비스
-
Context.startService() - 초기화 또는 새로운 지시
-
Context.bindService() - 서비스와의 연결
-
브로드캐스트리시버
-
브로드캐스팅 메서드 - 리시버에게 메시지를 보내는 메서드 들임
-
Context.sendBroadcast()
-
Context.sendOrderedBroadcast()
-
Context.sendStickyBroadcast()
인텐트 객체의 구성 요소
-
컴포넌트이름 / 액션(Action) / 카테고리(Category) / 데이터(Data) / 데이터 타입 (MIME Type) / 엑스트라(Extras)
-
컴포넌트 이름
-
클래스 이름 또는 매니페스트 파일에서 설정된 패키지 이름과 클래스 이름의 조합
-
컴포넌트 이름을 지정하는 인텐트를 '명시적인텐트'라 함
-
인텐트 객체는 지정한 클래스의 인스턴스를 생성하고 곧바로 전달
-
컴포넌트 이름 설정 - setComponent() , setClass() , setClassName()
-
컴포넌트 이름 읽기 - getComponent()
-
액션 - 액티비티액션 / 브로드캐스트액션
-
인텐트액션은 매니페스트 화일의 인텐트 필터와 연관된다. ACTION_MAIN은 'android.intent.action.MAIN'으로 사용
-
인텐트객체의 액션 설정 - setAction()
-
인텐트객체의 액션 읽기 - getAction()
-
액티비티액션
-
ACTION_MAIN - 시작하는 액티비티 지정
-
ACTION_VIEW - URI가 가리키는 데이터를 사용자에게 보여줌
-
ACTION_EDIT - URI가 가리키는 데이터를 편집
-
ACTION_DELETE - URI가 가리키는 데이터를 삭제
-
ACTION_DEFAULT - view와 같음
-
ACTION_PICK - 데이터에서 URI가 가리키는 정보를 반환
-
ACTION_GET_CONTENT - 데이터에서 하나의 콘텐트를 선택하여 반환
-
ACTION_RUN - 데이터를 실행
-
ACTION_INSERT - 빈 아이템 작성
-
ACTION_CALL - 전화연결 요청, 초기화 작업 추가되어 있음, 긴급전화 안됨
-
ACTION_DIAL - 전화연결 요청, 주로 사용
-
ACTION_SENDTO - 데이터의 메시지를 보내라
-
ACTION_ANSWER - 전화 착신에 관한 액션
-
ACTION_SYNC - 폰과 서버의 데이터를 동기화
-
브로드캐스트액션
-
ACTION_BATTERY_CHANGED - 배터리 잔량의 변화를 알림
-
ACTION_BATTERY_LOW - 배터리 부족 경고
-
ACTION_BOOT_COMPLETED - 시스템 부팅 완료 알림
-
ACTION_DATE_CHANGE - 날짜 변경 알림
-
ACTION_HEADSET_PLUG - 헤드셋이 기기에 연결 또는 분리되었음을 알림
-
ACTION_PACKAGE_ADDED - 어플리케이션 패키지 추가 알림
-
ACTION_PACKAGE_REMOVED - 어플리케이션 패키지 제거 알림
-
ACTION_SCREEN_ON - 스크린이 켜졌음을 알림
-
ACTION_TIMEZONE_CHANGED - 타임존 변경시 알림
-
ACTION_TIME_CHANGED - 시간 지정시 알림
-
ACTION_TIME_TICK - 매시간 변경시 알림
-
카테고리
-
액션을 수신하여야 할 컴포넌트의 종류에 대한 정보를 포함하는 문자열
-
몇가지 카티고리 상수를 제공
-
CATEGORY_BROWSABLE - 타겟 액티비티는 링크에 의해 참조되는 데이터를 보여주기 위해 호출되는 부라우져여야 한다.
-
CATEGORY_HOME - 홈화면을 보여주는 액티비티가 되어야 한다.
-
CATEGORY_LAUNCHER - 액티비티는 하나의 태스크에서 최초로 생성된 액티비티가 되며, 최상위 계층의 어플리케이션으로 시작된다.
-
CATEGORY_PREFERENCE - 타깃 액티비티는 설정 프리퍼런스이다.
-
데이터
-
처리할 데이터에 대한 URI와 MIME 타입
-
액션이 'ACTION_EDIT' 이면, 데이터 필드는 편집을 위한 문서의 URI
-
액션이 'ACTION_DIAL'이면, 데이터 필드는 전화번호를 가진 'tel:' URI
-
데이터 타입을 URI만으로 판단하기 어려운 경우 MIME 제공
-
setData() : URI 지정
-
getData() : URI 읽기
-
setType() : MIME 지정
-
getType() : MIME 읽기
-
setDataAndType() : URI, MIME 동시 지정
-
엑스트라
-
엑스트라에 필요한 값을 입력하면 안드로이드는 엑스트라 값을 번들객체로 변환
-
번들객체는 인텐트를 사용하여 컴포넌트를 호출할 때 onCreate() 콜백 메서드의 파라미터로 전달된다.
-
protected void onCreate(Bundle savedInstanceState)
-
번들객체는 HashMap<String,Object> 데이터 타입
-
putExtra()
-
putExtra(EXTRA_NAME,'이름')
-
getStringExtra(EXTRA_NAME)
-
getIntExtra(EXTRA_INT)
-
getBooleanExtra(EXTRA_BOOLEAN)
-
플래그
-
액티비티를 시작시키는 방법, 시작 이후 액티비티를 다루는 방법
-
intent.addFlag(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - 이건 호출되는 액티비티가 존재하면 새로운 액티비티 인스턴스를 생성하지 말고 현재 스택에 존재하는 액티비티의 인스턴스를 프로세스 스택의 최상단으로 위치시켜 포그라운드로 만들어라는 플래그
-
intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - 안드로이드에게 호출되었던 액티비티가 존재한다면 시작 시 자신의 상위 액티비티들을 모두 제거시켜라
펜딩인텐트
-
한 컴포넌트가 다른 컴포넌트에 작업을 요청하는 인텐트를 사전에 만들어 놓는다. 특정 시점에 자신이 아닌 다른 컴포넌트들이 펜딩인텐트를 사용하여 다른 컴포넌트에 작업을 요청하는데 사용된다.
-
예] 다운로드 서비스 - 상태바에 노티피케이션 아이콘을 만들고, 다운로드 완료되면 아이콘으로 완료 표시 / 상태바를 확장하면 나타나는 화면을 노티피케이션리스트 또는 확장메시지라 하는데 여기에 있는 완료메시지를 클릭하면 노티피케이션은 사전에 서비스에서 작성하여 놓은 펜딩인텐트를 사용하여 다운로드된 파일을 읽을 수 있는 어플리케이션을 호출하여 파일을 재생한다. 즉, 인텐트 작성은 다운로드를 하는 '서비스'가 하고 인텐트 사용은 '노티피케이션'이 하고 결과적으로 다운로드 결과를 활용할 다른 어플리케이션이 실행된다.
출처 : http://blog.naver.com/hojoon108?Redirect=Log&logNo=80140497011
반응형
'프로그래밍(~2017) > 안드로이드' 카테고리의 다른 글
[android 안드로이드] activity in activity 혹은 activity in fragment 혹은 태블릿에서 fragment 를 이용하여 mapview 여러개 뛰우기 (0) | 2012.01.06 |
---|---|
[android 안드로이드] Activity 를 dialog 처럼 사용하기 (1) | 2012.01.05 |
[android 안드로이드] Double click/tap detection on android's MapView 맵뷰 더블클릭/더블탭 (2) | 2012.01.04 |
[android 안드로이드] ontouchlistener 구현시 제스쳐 편하게 구현하기(클릭구현, 더블클릭구현 등등) (0) | 2012.01.03 |
XmlPullParser 사용시 유의법(규칙) (9) | 2011.09.22 |