alarmmanager 예제

매니페스트에서 부팅 수신기는 android:enabled=”false”로 설정되어 있습니다. 즉, 응용 프로그램이 명시적으로 활성화하지 않는 한 수신기가 호출되지 않습니다. 이렇게 하면 부팅 수신기가 불필요하게 호출되지 않습니다. 다음과 같이 수신기를 활성화할 수 있습니다(예: 설정(int, long, android.app.PendingIntent)과 같이 시스템이 저전력 유휴 상태(일명 doze) 모드인 경우에도 이 경보를 실행할 수 있습니다. 이러한 유형의 경보는 유휴 상태에서 실제로 알람이 꺼져야 하는 경우에만 사용해야 합니다. 경보가 전달되면 앱이 약 10초 동안 시스템의 임시 허용 목록에 추가되어 해당 응용 프로그램이 작업을 완료할 추가 절전 모드 해제 잠금을 획득할 수 있도록 합니다. 예를 들어, 시간 요구 사항이 엄격한 드문 앱의 경우 경보는 오전 8시 30분에 정확하게 발사되어야 하며, 그 이후 의 시간마다 setRepeating()를 사용해야 합니다. 그러나 가능하면 정확한 경보를 사용하지 않아야합니다. 알람에 대한 일반적인 클럭 유형은 “경과 실시간”과 “실시간 시계”(RTC)의 두 가지 유형이 있습니다. 경과 된 실시간은 “시스템 부팅 이후의 시간”을 참조로 사용하고, 실시간 시계는 UTC (벽 시계) 시간을 사용합니다. 즉, 경과된 실시간은 표준 시간대/로캘의 영향을 받지 않으므로 시간 경과(예: 30초마다 발생되는 경보)를 기반으로 알람을 설정하는 데 적합합니다.

실시간 클럭 유형은 현재 로캘에 종속된 경보에 더 적합합니다. 다음은 ELAPSED_REALTIME_WAKEUP를 사용하는 몇 가지 예입니다. 사용자가 제공한 특정 시간 이후에 실행되는 간단한 AlarmManager 예제를 살펴보겠습니다. 트리거 시간 요구 사항이 부정확한 반복 경보를 예약합니다. 예를 들어 매시간 반복되는 알람이지만 반드시 매시간 맨 위에 있는 것은 아닙니다. 이 경보는 시스템이 알람의 전달 시간을 조정하여 동시에 발사할 수 있으므로 장치를 깨우지 않도록 설정반복(int, long, long, PendingIntent)에서 전통적으로 제공하는 엄격한 재발보다 전력 효율이 높습니다. 필요 이상으로 잠을 자게 됩니다. 두 유형 모두 화면이 꺼져 있으면 장치의 CPU를 깨우라는 “웨이크 업”버전이 있습니다. 이렇게 하면 예정된 시간에 알람이 울립니다. 이 기능은 앱에 특정 작업을 수행할 수 있는 창이 제한된 경우와 같은 시간 종속성이 있는 경우에 유용합니다. 알람 유형의 절전 모드 해제 버전을 사용하지 않으면 기기가 다음에 깨어있을 때 모든 반복 알람이 울립니다. 귀하의 웹 사이트는 훌륭하고 모든 안드로이드 튜토리얼은 우수합니다.

나는 당신이 일을 매우 쉽게 만드는 모든 기능을 설명하기 위해 완전한 작업 예를 준다는 사실을 좋아합니다. 앱에 따라 알람을 취소하는 기능을 포함할 수 있습니다. 알람을 취소하려면 더 이상 발사하지 않으려는 보류 중인 인텐트를 전달하는 알람 관리자에서 cancel()을 호출합니다. 예: 이러한 방식으로 수신기를 사용하도록 설정하면 사용자가 장치를 재부팅하더라도 활성화된 상태로 유지됩니다. 즉, 프로그래밍 방식으로 수신기를 사용하도록 설정하면 재부팅 시에도 매니페스트 설정이 재정의됩니다. 앱이 비활성화될 때까지 수신기는 계속 활성화됩니다. 다음과 같이 수신기를 비활성화할 수 있습니다(예: 사용자가 경보를 취소하는 경우) 앱의 수명 이외에 작업을 트리거하는 일반적인 시나리오는 서버와 데이터를 동기화하는 것입니다. 이것은 반복 알람을 사용하려는 유혹을 받을 수 있는 경우입니다. 그러나 앱의 데이터를 호스팅하는 서버를 소유하고 있는 경우 동기화 어댑터와 함께 GCM(Google 클라우드 메시징)을 사용하는 것이 AlarmManager보다 더 나은 솔루션입니다.

This entry was posted in Uncategorized. Bookmark the permalink.

Comments are closed.