블로그 내에서 다른 포스팅 검색하기기
검색어를 입력해주세요

목차

  1. AlarmManager이란?
  2. AlarmManager 초기화 예제
  3. AlarmManager을 통해 일정 시간 뒤 Intent 실행하기
  4. AlarmManager을 통해 일정 시간 뒤 리시버에 액션 전달하기
  5. AlarmManager setRepeating 설정으로 주기 설정

 

 

안드로이드 개발자 페이지에서 확인할 수 있는 AlarmManager의 상수 필드들 소개

 

 

 

 

1. AlarmManager이란?

AlarmManager는 안드로이드 앱에서 특정 시간에 작업을 예약하고 반복적인 작업을 수행하는 데 사용되는 클래스입니다.

예를 들어, 알람을 설정하거나 일정 시간 후에 서비스를 실행하는 등의 작업을 할 때 AlarmManager를 활용할 수 있습니다.

 

AlarmManager를 사용하면 앱이 실행 중이지 않은 상태에서도 작업을 수행할 수 있으므로 유용합니다.

 

알람은 정해진 시간마다 우리에게 알려주는 역할을 한다. AlarmManager도 정해진 시간마다 우리이게 특정 메세지를 전달해준다.

 

 

 

 

2. AlarmManager 초기화 예제

AlarmManager를 초기화하고 알림을 설정하는 예제입니다.

 

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

public class MyAlarmManager {

    public void setAlarm(Context context, long triggerTime, Intent intent) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent);
    }

    public void cancelAlarm(Context context, Intent intent) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmManager.cancel(pendingIntent);
    }
}

 

 

예제와 같이 setAlarm을 통해 미래 전달해줄 메세지를 저장하고 cancelAlarm을 통해 기존 예약된 알람을 삭제할 수 있다.

 

 

 

 

 

3. AlarmManager을 통해 일정 시간 뒤 Intent 실행하기

AlarmManager를 사용하여 일정 시간 후에 Intent를 실행하는 예제입니다.

 

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyAlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // AlarmManager를 통해 예약한 작업을 여기에 구현
        Toast.makeText(context, "Alarm Triggered!", Toast.LENGTH_SHORT).show();
    }
}

 

위의 예제처럼 알람매니저로부터 메시지를 수신할 리시버를 등록한다.

 

 

 

 

 

4. AlarmManager을 통해 일정 시간 뒤 리시버에 액션 전달하기

AlarmManager를 사용하여 일정 시간 후에 리시버에 액션을 전달하는 예제입니다.

 

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyAlarmManager {

    public void setAlarm(Context context, long triggerTime, String action) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, MyAlarmReceiver.class);
        intent.setAction(action);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent);
    }

    public void cancelAlarm(Context context, String action) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, MyAlarmReceiver.class);
        intent.setAction(action);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmManager.cancel(pendingIntent);
    }
}

 

 

결론적으로는 메시지를 수신할 리시버와 미래 메시지를 전송할 알람매니저를 통한 알람 등록 2개의 쌍으로 이루어진다.

 

 

 

 

 

5. AlarmManager setRepeating 설정으로 주기 설정

AlarmManager를 더욱 활용한 예제입니다.

 

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

public class MyAlarmManager {

    public void setRepeatingAlarm(Context context, long startTime, long interval, String action) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, MyAlarmReceiver.class);
        intent.setAction(action);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startTime, interval, pendingIntent);
    }

    public void cancelRepeatingAlarm(Context context, String action) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, MyAlarmReceiver.class);
        intent.setAction(action);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmManager.cancel(pendingIntent);
    }
}

 

반응형


살구엉덩이님의
글이 좋았다면 응원을 보내주세요!