From a0721fda9cd31f3c09f10f9adf7d2731168707c6 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Mon, 8 Sep 2025 17:07:14 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[FEAT/#248]=20=EC=95=8C=EB=9E=8C=20?= =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=A4=84=EB=A7=81=20=EC=8B=9C=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=20=ED=95=A8=EC=88=98=20=EC=B6=94=EC=A0=81=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yapp/alarm/AndroidAlarmScheduler.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/alarm/src/main/java/com/yapp/alarm/AndroidAlarmScheduler.kt b/core/alarm/src/main/java/com/yapp/alarm/AndroidAlarmScheduler.kt index 2691e78b..49c4581a 100644 --- a/core/alarm/src/main/java/com/yapp/alarm/AndroidAlarmScheduler.kt +++ b/core/alarm/src/main/java/com/yapp/alarm/AndroidAlarmScheduler.kt @@ -2,6 +2,7 @@ package com.yapp.alarm import android.app.AlarmManager import android.app.Application +import android.util.Log import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForSchedule import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForUnSchedule import com.yapp.domain.model.Alarm @@ -16,6 +17,15 @@ class AndroidAlarmScheduler @Inject constructor( private val alarmTimeCalculator: AlarmTimeCalculator, ) : AlarmScheduler { + private fun logSchedule(tag: String, alarm: Alarm, triggerMillis: Long, extra: String = "") { + Log.d("ScheduleTrace", "scheduleAlarm Called", Throwable()) + Log.d( + "AlarmSchedule", + "[$tag] id=${alarm.id}, repeatDays=${alarm.repeatDays}, " + + "time=${java.time.Instant.ofEpochMilli(triggerMillis)} $extra", + ) + } + override fun scheduleAlarm(alarm: Alarm) { val selectedDays = alarm.repeatDays.toAlarmDays() @@ -31,7 +41,7 @@ class AndroidAlarmScheduler @Inject constructor( private fun setRepeatingAlarm(day: AlarmDay, alarm: Alarm) { val triggerMillis = alarmTimeCalculator.calculateNextRepeatingTimeMillis(alarm, day) val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day) - + logSchedule("REPEAT", alarm, triggerMillis, "day=$day") alarmManager.setExactAndAllowWhileIdle( AlarmManager.RTC_WAKEUP, triggerMillis, @@ -42,7 +52,7 @@ class AndroidAlarmScheduler @Inject constructor( private fun setNonRepeatingAlarm(alarm: Alarm) { val triggerMillis = alarmTimeCalculator.calculateNonRepeatingTimeMillis(alarm) val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm) - + logSchedule("NON_REPEAT", alarm, triggerMillis) alarmManager.setExactAndAllowWhileIdle( AlarmManager.RTC_WAKEUP, triggerMillis, @@ -53,7 +63,7 @@ class AndroidAlarmScheduler @Inject constructor( fun rescheduleUpcomingWeeklyAlarm(alarm: Alarm, day: AlarmDay) { val triggerMillis = alarmTimeCalculator.calculateNextWeeklyRescheduledTimeMillis(alarm, day) val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day) - + logSchedule("RESCHEDULE_WEEKLY", alarm, triggerMillis, "day=$day") alarmManager.setExactAndAllowWhileIdle( AlarmManager.RTC_WAKEUP, triggerMillis, From 57a42df1304757eb9507152effca413de95f37a2 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Mon, 8 Sep 2025 17:08:40 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[FIX/#248]=20collect=20->=20first=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=9C=BC=EB=A1=9C=20DB=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=20=EC=8B=9C=20=EB=B0=98=EB=B3=B5=20=EB=93=B1=EB=A1=9D=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yapp/alarm/receivers/RescheduleAlarmReceiver.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/alarm/src/main/java/com/yapp/alarm/receivers/RescheduleAlarmReceiver.kt b/core/alarm/src/main/java/com/yapp/alarm/receivers/RescheduleAlarmReceiver.kt index 9d21144d..b42e9fab 100644 --- a/core/alarm/src/main/java/com/yapp/alarm/receivers/RescheduleAlarmReceiver.kt +++ b/core/alarm/src/main/java/com/yapp/alarm/receivers/RescheduleAlarmReceiver.kt @@ -8,6 +8,7 @@ import com.yapp.domain.usecase.AlarmUseCase import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import javax.inject.Inject @@ -31,11 +32,10 @@ class RescheduleAlarmReceiver : BroadcastReceiver() { private fun rescheduleAlarm() { CoroutineScope(Dispatchers.IO).launch { - alarmUseCase.getAllAlarms().collect { alarms -> - alarms.forEach { alarm -> - androidAlarmScheduler.scheduleAlarm(alarm) - } - } + val alarms = alarmUseCase.getAllAlarms().first() + alarms + .filter { it.isAlarmActive } + .forEach { alarm -> androidAlarmScheduler.scheduleAlarm(alarm) } } } }