목차
- AlarmManager이란?
- AlarmManager 초기화 예제
- AlarmManager을 통해 일정 시간 뒤 Intent 실행하기
- AlarmManager을 통해 일정 시간 뒤 리시버에 액션 전달하기
- AlarmManager setRepeating 설정으로 주기 설정
1. 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);
}
}
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);
}
}
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);
}
}
반응형