Я думаю, что JobScheduler может удовлетворить ваши потребности.
Пример для 1 уведомления в час
val jobScheduler = getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(
JobInfo
.Builder(1, ComponentName(this, JobServiceImpl::class.java))
.setMinimumLatency(TimeUnit.HOURS.toMillis(1))
.setBackoffCriteria(TimeUnit.HOURS.toMillis(1), JobInfo.BACKOFF_POLICY_LINEAR)
.build()
)
JobServiceImpl class
class JobServiceImpl : JobService() {
override fun onStopJob(params: JobParameters?): Boolean {
return true
}
override fun onStartJob(params: JobParameters?): Boolean {
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.notify(....your notification)
return true
}
}
не забудьте добавить это
<service
android:name=".JobServiceImpl"
android:permission="android.permission.BIND_JOB_SERVICE" />
в манифест. Подробности о планировщике работы можно найти здесь