Skip to content

Commit b4e7807

Browse files
authored
Merge pull request #265 from YAPP-Github/refactor/#264-use-alarmclock-for-alarmmanager
[REFACTOR] AlarmManager.setAlarmClock 사용하기
2 parents bc7ae1c + 3a7106b commit b4e7807

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

core/alarm/src/main/java/com/yapp/alarm/AndroidAlarmScheduler.kt

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package com.yapp.alarm
22

33
import android.app.AlarmManager
44
import android.app.Application
5+
import android.app.PendingIntent
6+
import android.content.Intent
57
import android.util.Log
68
import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForSchedule
79
import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForUnSchedule
@@ -26,6 +28,23 @@ class AndroidAlarmScheduler @Inject constructor(
2628
)
2729
}
2830

31+
private fun createShowMainActivityPendingIntent(): PendingIntent {
32+
val intent = Intent().apply {
33+
setClassName(
34+
app.packageName,
35+
"com.yapp.orbit.MainActivity",
36+
)
37+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
38+
}
39+
40+
return PendingIntent.getActivity(
41+
app,
42+
0,
43+
intent,
44+
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT,
45+
)
46+
}
47+
2948
override fun scheduleAlarm(alarm: Alarm) {
3049
val selectedDays = alarm.repeatDays.toAlarmDays()
3150

@@ -42,9 +61,11 @@ class AndroidAlarmScheduler @Inject constructor(
4261
val triggerMillis = alarmTimeCalculator.calculateNextRepeatingTimeMillis(alarm, day)
4362
val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day)
4463
logSchedule("REPEAT", alarm, triggerMillis, "day=$day")
45-
alarmManager.setExactAndAllowWhileIdle(
46-
AlarmManager.RTC_WAKEUP,
47-
triggerMillis,
64+
alarmManager.setAlarmClock(
65+
AlarmManager.AlarmClockInfo(
66+
triggerMillis,
67+
createShowMainActivityPendingIntent(),
68+
),
4869
pendingIntent,
4970
)
5071
}
@@ -53,9 +74,11 @@ class AndroidAlarmScheduler @Inject constructor(
5374
val triggerMillis = alarmTimeCalculator.calculateNonRepeatingTimeMillis(alarm)
5475
val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm)
5576
logSchedule("NON_REPEAT", alarm, triggerMillis)
56-
alarmManager.setExactAndAllowWhileIdle(
57-
AlarmManager.RTC_WAKEUP,
58-
triggerMillis,
77+
alarmManager.setAlarmClock(
78+
AlarmManager.AlarmClockInfo(
79+
triggerMillis,
80+
createShowMainActivityPendingIntent(),
81+
),
5982
pendingIntent,
6083
)
6184
}
@@ -64,9 +87,11 @@ class AndroidAlarmScheduler @Inject constructor(
6487
val triggerMillis = alarmTimeCalculator.calculateNextWeeklyRescheduledTimeMillis(alarm, day)
6588
val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day)
6689
logSchedule("RESCHEDULE_WEEKLY", alarm, triggerMillis, "day=$day")
67-
alarmManager.setExactAndAllowWhileIdle(
68-
AlarmManager.RTC_WAKEUP,
69-
triggerMillis,
90+
alarmManager.setAlarmClock(
91+
AlarmManager.AlarmClockInfo(
92+
triggerMillis,
93+
createShowMainActivityPendingIntent(),
94+
),
7095
pendingIntent,
7196
)
7297
}

0 commit comments

Comments
 (0)