Android AlarmManager 사용

사용 버전: Android Studio 4.0.1
사용 언어: Kotlin 1.4.0
​

안드로이드 AlarmManager 사용을 해보겠습니다.

​
AlarmManager는 다음과 같은 특징이 있습니다.
- 지정된 시간에 또는 정해진 간격으로 인텐트를 실행.
- Broadcast receiver와 함께 알람을 사용하여 서비스를 시작하고 다른 작업을 수행.
- 애플리케이션 외부에서 작동하므로 앱이 실행 중이 아니거나, 기기가 대기 상태인 경우에도 작업을 트리거.
- 알람은 앱의 리소스 요구 사항을 최소화. 타이머나 계속 실행 중인 백그라운드 서비스를 사용하지 않고 예약 가능.
​
​
AlarmManager를 이용해서 Notification을 반복적으로 불러오는 것을 해보겠습니다.
먼저 알림을 먼저 사용해 줍니다.




기존에 버튼을 누르면 Notification이 나오는 것을 제거합니다.




위에를 아래처럼 수정합니다.





ViewModel을 사용합니다.




여기서 ViewModel을 AndroidViewModel로 변경합니다.

​

아래는 ViewModel class 파일.





아래는 ViewModelFactory class 파일.





아래는 Fragment class 파일.






NotificationUtils.kt 파일로 가서 아래 함수를 추가합니다.






ViewModel로 가서 AlarmManager를 정의합니다.





그리고 알람 시작 함수를 만듭니다.

현재 시각 + 5 초 뒤에 Notification이 발동하도록 triggerTime을 설정했습니다.

그리고 Notification을 보여주기 전에 기존에 있던 Notification은 cancel로 모두 지우도록 만들었습니다.






AlarmReceiver class 파일을 만듭니다.





그리고 BroadcastReceiver()를 상속하고, onReceive를 override 합니다.






ViewModel로 돌아옵니다. 위로 올라가서, REQUEST_CODE와 notifyPendingIntent, notifyIntent를 추가합니다.






clearAlarm도 만들어 줍니다.








AlarmReceiver를 수정합니다.








Fragment로 돌아와서 버튼에 알람을 연결합니다.






Manifest로 갑니다.

<application></application> 태그 안에 <receiver></receiver> 태그를 만듭니다.







실행해 봅시다.






실행됩니다.

앱을 뒤로 가기 해서 나가봅니다.







잘 실행되네요.

AlarmManager를 사용하면서 발견된 문제점이 있습니다.

첫 번째 실행 시에는 메모리에서 지울 시, AlarmManager가 실행되지 않습니다.

두 번째 실행 때에는 메모리에서 지워도 잘 실행됩니다.

다른 문제점은 분명 5 초 단위로 했지만, 약 1 분마다 실행된다는 것입니다. 아마도 최소 시간이 1 분인가 봅니다.

​

​

끝.


카테고리: Android

댓글

이 블로그의 인기 게시물

일본어 문장부호

KiCad 시작하기 7 (FreeRoute 사용하기 2)

KiCad 시작하기 3 (새로운 소자 추가하기)

Python urllib.parse.quote()

음악 총보(Score), 파트보(Part)

Forensics .pyc 파일 .py로 복구하기

KiCad 시작하기 2 (PCB 만들기)

KiCad 시작하기 6 (FreeRoute 사용하기 1)

Kivy 시작하기 12 (Pyinstaller로 exe 파일 만들기)

RFC 9421