작동 원리
브로드캐스트 전송 -> 리시버에서 수신 -> 리시버 클래스 실행
- 부팅 완료 브로드캐스트 전송
디바이스가 부팅을 완료하면 시스템이 android.intent.action.BOOT_COMPLETED 브로드캐스트를 전송합니다. - 리시버에서 감지
Manifest에 정의된 브로드캐스트 리시버가 이 브로드캐스트를 수신합니다. - 리시버 클래스 실행
.MyReceiver 클래스의 onReceive() 메서드가 호출되어, 부팅 후 실행해야 할 작업을 처리합니다.
브로드캐스트 리시버(Broadcast receiver)
- 시스템에 변화가 생겼을 때 이를 알려주는 방식
- 시스템 서비스를 위해 시스템 이벤트를 전역으로 방송할 때 이를 이용
- 애플리케이션들이 항상 방송에 주의를 기울이고 있으면 휴 대 단말에서 발생하는 여러 가지 변화에 대한 제어가 가능
- 서비스나 알림과 비슷한 부류
- 방송을 수신하는 애플리케이션은 브로드캐스트 리시버를 갖고 있고 방송 수신을 대기
- 이것은 사용자와 직접 상호작용하지 않음
- 브로드캐스트 리시버는 사용자 인터페이스를 보여주지 않 지만, 수신한 정보에 응답하는 액티비티를 시작하거나, 사 용자에게 알려주기 위한 알림 매니저를 사용할 수 있음
1. 브로드캐스트 리시버의 주요 역할
- 이벤트 기반 통신
시스템 또는 앱에서 특정 이벤트가 발생했을 때 브로드캐스트를 통해 이를 다른 앱이나 컴포넌트에 알립니다. - 시스템 이벤트 감지
안드로이드 시스템에서 발생하는 다양한 이벤트를 앱이 감지하고 적절히 대응할 수 있습니다.
예:- 네트워크 상태 변경
- 배터리 상태 변경
- 디바이스 부팅 완료
- 앱 간 통신
앱 간의 이벤트나 데이터를 전달하는 데 사용할 수 있습니다.
2. 브로드캐스트 리시버가 필요한 상황
(1) 시스템 브로드캐스트 수신
시스템에서 발생하는 이벤트를 감지하여 앱의 동작을 조정하거나 사용자에게 알림.
예:
- 기기 부팅 완료 시 특정 작업 실행: android.intent.action.BOOT_COMPLETED
- 네트워크 연결 상태 변경 감지: android.net.conn.CONNECTIVITY_CHANGE
브로드캐스트 액션
앱컴포넌트: 액티비티, 서비스 브로드캐스트 리시버 콘텐츠 프로바이더
이미지에서 말하는 앱컴포넌트는 브로드캐스트
인텐트 필터(Intent Filter)란?
인텐트 필터는 특정 **인텐트(Intent)**를 필터링하기 위해 사용하는 설정으로, 브로드캐스트 리시버, 액티비티, 서비스 등이 어떤 인텐트를 처리할 수 있는지 명시
이미지에 표시된 인텐트 필터는 부팅 완료 시 이벤트를 감지하기 위해 설정
1. <intent-filter>
- intent-filter 태그는 리시버가 수신할 수 있는 인텐트의 유형을 정의합니다.
2. <action>
- action은 수신할 인텐트의 **행동(액션)**을 정의합니다.
- 예: 이미지에서 사용된 android.intent.action.BOOT_COMPLETED는 디바이스 부팅 완료를 의미합니다.
의미: 디바이스 부팅이 완료된 후 시스템이 이 액션을 포함하는 브로드캐스트를 전송할 때, 이 리시버가 해당 브로드캐스트를 수신합니다.
3. (선택 사항) <category>
- 추가적인 필터링 기준을 정의하는데 사용됩니다.
- 예를 들어, 특정 유형의 컴포넌트나 앱에서만 수신하도록 제한할 때 사용합니다.
(이미지에서는 사용되지 않았음.)
코드 설명
(1) <receiver> 태그
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true">
- android:name: 브로드캐스트 리시버 클래스 이름을 지정합니다. .MyReceiver는 해당 앱의 패키지 내에 있는 MyReceiver 클래스를 나타냅니다.
- android:enabled: 리시버가 활성 상태인지 여부를 나타냅니다. true로 설정하여 활성화.
- android:exported: 이 리시버가 외부 앱에서 브로드캐스트를 받을 수 있는지 여부를 지정합니다. true로 설정하여 외부 앱 또는 시스템 이벤트를 받을 수 있습니다.
(2) <intent-filter> 태그
<intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter>
- <action>
- android.intent.action.BOOT_COMPLETED: 디바이스 부팅 완료를 나타내는 시스템 브로드캐스트.
- 역할: 부팅 완료 시 시스템이 브로드캐스트를 전송하면 이 리시버가 해당 이벤트를 감지하여 작업을 수행합니다.
- 예시: 부팅 직후 알림을 띄우거나 서비스를 시작할 때 사용됩니다.
- Context:
- 현재 앱의 환경을 제공하는 객체. 시스템 리소스와 서비스를 사용할 때 필요합니다.
- Intent:
- 발생한 브로드캐스트 메시지와 관련된 데이터를 포함하는 객체.
- 발생한 이벤트의 액션과 데이터를 파악하여 그에 맞는 처리를 할 수 있습니다.
액티비티 플래그
액티비티와 태스크
1. 액티비티
같은 애플리케이션 내에 존재하는 액티비티 뿐만 아니 라 다른 애플리케이션 내에 존재하는 액티비티까지 호출 가능
예) 서적 관리 애플리케이션 = 서적 관리 일반 기능 + 특정 기능 (바코드 스캔)
2. 태스크(Task)
사용자가 실질적으로 “하나의 애플리케이션처럼” 느끼는 액티비티들의 집합
'android' 카테고리의 다른 글
안드로이드기능/실습–19 CONTENT PROVIDER- AUDIO (5) | 2024.12.06 |
---|---|
8장 기능/실습 - 15 ( GridView ) (1) | 2024.10.10 |
7장 기능/실습 - 14 ( Spinner ) (0) | 2024.10.08 |
7장 기능/실습 - 13 ( ListView ) (4) | 2024.10.08 |