Skip to content

BroadcastReceiver 학습 및 실습 예제 구현#24

Merged
sh1mj1 merged 7 commits intodevfrom
android/4components/broadcast-receiver
May 22, 2025
Merged

BroadcastReceiver 학습 및 실습 예제 구현#24
sh1mj1 merged 7 commits intodevfrom
android/4components/broadcast-receiver

Conversation

@sh1mj1
Copy link
Owner

@sh1mj1 sh1mj1 commented May 22, 2025

주요 실습

1. 네트워크 상태 변화 감지 기능 구현(동적으로 Broadcast 등록)

  • BroadcastReceiver(NetworkChangeReceiver)를 동적으로 등록하여, 네트워크 상태 변경 브로드캐스트 수신
  • 연결이 끊겼을 때 AlertDialog 표시, 연결 시 자동 닫힘
  • 연결 여부 판단은 NetworkActivity로 이동하여 책임 분리

2. 알람 기반 푸시 알림 기능 구현(정적으로 Broadcast 를 Manifest 등록)

  • AlarmActivity에서 버튼 클릭 시 AlarmManager.setExact()을 사용해 6초 후 알림 예약
  • 알림이 도착하면 NotificationReceiveronReceive()에서 Notification 표시
  • 알림 클릭 시 AlarmActivity가 실행되도록 PendingIntent 구성

이후 BroadcastReceiver 실습 방향 (TODO)

1. 정적 등록이 가능한 브로드캐스트 목록 추가 학습

  • 예: BOOT_COMPLETED, SMS_RECEIVED, ACTION_PACKAGE_ADDED
  • Android 8.0 이상부터의 제한 사항 명확히 이해하기

2. 브로드캐스트 우선순위(priority) 및 순차 처리(ordered broadcast)

  • intent-filter에 설정 가능한 <priority> 속성
  • abortBroadcast()의 의미와 실제 사용 사례

3. 보안 관점에서의 BroadcastReceiver

  • android:permission, LocalBroadcastManager 비교
  • 외부 브로드캐스트 차단 vs 허용 사례 학습

4. BroadcastReceiver vs WorkManager / NetworkCallback

  • 최신 Android 앱에서 대체 가능한 구조 설계 고려
  • 브로드캐스트 리시버가 과연 최적의 선택인지 판단하는 기준 잡기

sh1mj1 added 7 commits May 21, 2025 20:45
- NetworkChangeReceiver: 네트워크 연결 상태가 변경될 때 호출되는 BroadcastReceiver
- NetworkActivity: 네트워크 연결 상태에 따라 UI를 업데이트하는 Activity
- `NetworkChangeReceiver` 의 네트워크 상태 로직을 액티비티로 옮긴다
- `AlarmActivity` 추가: 6초 후 알림을 예약하고 표시한다
  - `POST_NOTIFICATIONS` 권한 요청 (API 33 이상)
  - `SCHEDULE_EXACT_ALARM` 권한 확인 및 요청 (API 31 이상)
  - `AlarmManager.setExact()`를 사용하여 특정 시간에 알림 예약
- `NotificationReceiver` 추가: 예약된 알림을 수신하여 사용자에게 알림 표시
- `AndroidManifest.xml`에 `AlarmActivity`, `NotificationReceiver`, `SCHEDULE_EXACT_ALARM` 권한 추가
- `onReceive` 메서드에서 알림 생성 및 표시 로직을 별도 함수로 분리
- 불필요한 로그 호출 제거
- `android.R` 대신 `R` 사용하도록 수정
- 브로드캐스트 리시버의 개념, 사용 사례, 종류 설명
- 동적 등록 예시: 네트워크 상태 변경 감지
  - `NetworkChangeReceiver`, `NetworkActivity` 코드와 함께 동작 순서, 플랫폼 아키텍처에서의 동작 흐름 설명
- 정적 등록 예시: 자동 알림
  - 주요 컴포넌트(`AlarmManager`, `PendingIntent`, `BroadcastReceiver`, `NotificationManager`) 역할 소개
  - `AlarmActivity`, `NotificationReceiver` 코드와 함께 동작 순서, 플랫폼 아키텍처에서의 동작 흐름 설명
@sh1mj1 sh1mj1 merged commit 4e75e81 into dev May 22, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant