• [Kotlin] 안드로이드스튜디오 AlramManager 기능 및 사용방법

    2023. 2. 25.

    by. 하루플스토리

    반응형

    안녕하세요, 하루플입니다.

     

    Android 플랫폼은 AlramManager API를 포함해 백그라운드 작업을 관리하기 위한 여러 API를 제공합니다.

    이번에는 AlramManger API를 이용해 백그라운드 작업을 예약하고 실행하는데 사용할  수 있는 방법을 보겠습니다.

     

    AlramManager

    AlramManager API는 개발자가 애플리케이션에서 백그라운드 작업을 예약하고 실행할 수 있도록 하는 Android 플랫폼의 구성 요소입니다. 특정 간격 또는 특정 시간에 작업을 예약하고 실행하는 간단하고 효율적인 방법을 제공합니다. 새 데이터 또는 알림 확인, 정기 유지 관리작업 수행, 백그라운드 서비스 실행 등 다양한 작업을 수행할 수 있습니다.

     

    AlramManager API의 가장 일반적으로 사용되는 내장 기능 중 일부입니다.

    set() : 특정 시간 또는 특정 간격 후에 실행될 작업을 예약하는 데 사용합니다. 개발자는 set() 함수를 사용하기 위해 알람의 종류, 알람이 발생해야 하는 시간, 알람이 발생할 때 실행한 PendingIntent를 인자 값으로 제공해야 합니다.

     

    setRepeating() : 특정 간격으로 실행할 작업을 예약하는데 사용됩니다. 알람의 종류, 알람이 발생해야 하는 간격, 알람이 처음 발생해야 하는 시간, 알람 발생 시 실행한 PendingIntent를 제공해야 합니다. 정확한 시간에 알람이 울려야 하는 경우 사용합니다.

     

    setInexactRepeating() : setRepeating 함수와 유사하지만 시스템이 알람의 정확한 타이밍을 조정해 시스템 리소스를 최적화 할 수 있습니다. (배터리 타임 최적화 등)  인자 값은 setRepeating과 동일하게 제공하면 됩니다. 정확한 시간에 알람이 울리지 않을 수 있지만 시슨템 최적화를 위해 안드로이드에서 권장하는 방법입니다.

     

    cancel() : 이전에 예약된 알람을 취소하는데 사용합니다.

     


    해당 예시에서는 NotificationReceiver와 Menifest 작성에 대해서는 생략하였습니다. 단순히 AlramManager의 기능을 알아보기 위한 포스팅입니다.

     

    1) 특정 시간에 실행되도록 작업 예약

    set() 함수를 사용해 특정 시간에 실행될 작업을 예약합니다. 작업은 지정된 시간에 사용자에게 알림을 표시합니다.

    val notificationIntent = Intent(this, NotificationReceiver::class.java)
    val pendingIntent = PendingIntent.getBroadcast(this, 0, notificationIntent, 0)
    val currentTime = System.currentTimeMillis()
    val triggerTime = currentTime + 10000 //알림 작동 시간 테스트로 10초 후로 지정
    val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
    alarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent)

    알람이 실행되어야 하는 시간을 계산하고(예시에서는 10초 후) AlramManger의 인스턴스를 가져옵니다. 마지막에 set() 함수를 사용해 지정된 시간에 알람이 울리도록 예약합니다.

     

     

    2) 특정 간격으로 실행되도록 작업 예약

    setRepeating()함수를 사용하여 특정 간격으로 실행될 작업을 예약합니다. 작업은 30분 마다 사용자에게 알림을 표시합니다.

    val notificationIntent = Intent(this, NotificationReceiver::class.java)
    val pendingIntent = PendingIntent.getBroadcast(this, 0, notificationIntent, 0)
    val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
    alarmManager.setRepeating(
        AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis(),
        AlarmManager.INTERVAL_HALF_HOUR,
        pendingIntent
    )

    setReapeating의 AlramManager.INTERVAL_HALF_HOUR를 수정해 원하는 시간마다 알림을 표시하도록 수정할 수 있습니다.

     

     

    3) 부정확한 간격으로 실행되도록 작업 예약

    setInexactRapeating() 함수를 사용해 부정확한 간격으로 실행되도록 작업을 예약할 수 있습니다. 작업은 네트워크 호출을 수행해 6시간마다 새 데이터를 확인합니다.

    val networkIntent = Intent(this, NetworkReceiver::class.java)
    val pendingIntent = PendingIntent.getBroadcast(this, 0, networkIntent, 0)
    val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
    alarmManager.setInexactRepeating(
        AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis(),
        AlarmManager.INTERVAL_HALF_DAY,
        pendingIntent
    )

     

     

     

    AlramMangerAPI의 기능 및 Android에서 백그라운드 작업을 예약하고 실행하는 데 사용할 수 있는 방법을 살펴보았습니다. 새로운 데이터를 확인하든, 정기적인 유지 관리 작업을 수행하든 백그라운드 서비스를 실행하든 관계 없이 AlramManager API를 사용하면 이러한 작업을 쉽게 관리하고 실행할 수 있습니다.

     

     

    안드로이드 개발 문서 참고 링크

     

    반복 알람 예약  |  Android 개발자  |  Android Developers

    반복 알람 예약 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 알람(AlarmManager 클래스 기반)을 사용하면 애플리케이션이 사용되지 않을 때 시간 기반 작업을

    developer.android.com

    반응형

    댓글