프로그래밍(~2017)/안드로이드

android 안드로이드 intent 인텐트 변수 정리

단세포소년 2011. 9. 26. 18:05
반응형

인텐트

  • 컴포넌트 들 간에 작업요청 및 데이터를 전달하는 메시지
  • 작업요청 컴포넌트는 인텐트를 보내기 위해 다음 메서드 호출
    • 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
반응형