Before 2022/Java & Spring
자정(다음날 0시)이 될 때마다 특정 로직 실행하기
Eljoe
2018. 9. 2. 17:56
알람 메소드
public static void resetAlarm(Context context){ AlarmManager resetAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent resetIntent = new Intent(context, 로직 클래스); PendingIntent resetSender = PendingIntent.getBroadcast(context, 0, resetIntent, 0); // 자정 시간 Calendar resetCal = Calendar.getInstance(); resetCal.setTimeInMillis(System.currentTimeMillis()); resetCal.set(Calendar.HOUR_OF_DAY, 0); resetCal.set(Calendar.MINUTE,0); resetCal.set(Calendar.SECOND, 0); //다음날 0시에 맞추기 위해 24시간을 뜻하는 상수인 AlarmManager.INTERVAL_DAY를 더해줌. resetAlarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, resetCal.getTimeInMillis() +AlarmManager.INTERVAL_DAY, AlarmManager.INTERVAL_DAY, resetSender); SimpleDateFormat format = new SimpleDateFormat("MM/dd kk:mm:ss"); String setResetTime = format.format(new Date(resetCal.getTimeInMillis()+AlarmManager.INTERVAL_DAY)); Log.d("resetAlarm", "ResetHour : " + setResetTime); }해당 로직을 구현할 Class에선 BroadcastReceiver를 상속받아 onReceive 오버라이드 메소드 내에서 실행하고 싶은 로직을 작성하면 된다.