Skip to content

Commit 700e803

Browse files
committed
[REFACTOR] goAsync() 적용으로 재부팅 시 알람 재등록 안정성 강화
1 parent 210924b commit 700e803

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

core/alarm/src/main/java/com/yapp/alarm/receivers/RescheduleAlarmReceiver.kt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.yapp.domain.usecase.AlarmUseCase
88
import dagger.hilt.android.AndroidEntryPoint
99
import kotlinx.coroutines.CoroutineScope
1010
import kotlinx.coroutines.Dispatchers
11+
import kotlinx.coroutines.SupervisorJob
1112
import kotlinx.coroutines.flow.first
1213
import kotlinx.coroutines.launch
1314
import javax.inject.Inject
@@ -26,16 +27,21 @@ class RescheduleAlarmReceiver : BroadcastReceiver() {
2627
intent ?: return
2728

2829
if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
29-
rescheduleAlarm()
30+
val pending = goAsync()
31+
rescheduleAlarm(pending)
3032
}
3133
}
3234

33-
private fun rescheduleAlarm() {
34-
CoroutineScope(Dispatchers.IO).launch {
35-
val alarms = alarmUseCase.getAllAlarms().first()
36-
alarms
37-
.filter { it.isAlarmActive }
38-
.forEach { alarm -> androidAlarmScheduler.scheduleAlarm(alarm) }
35+
private fun rescheduleAlarm(pendingResult: PendingResult) {
36+
CoroutineScope(Dispatchers.IO + SupervisorJob()).launch {
37+
try {
38+
val alarms = alarmUseCase.getAllAlarms().first()
39+
alarms
40+
.filter { it.isAlarmActive }
41+
.forEach { alarm -> androidAlarmScheduler.scheduleAlarm(alarm) }
42+
} finally {
43+
pendingResult.finish()
44+
}
3945
}
4046
}
4147
}

0 commit comments

Comments
 (0)