Я хочу запустить пользовательский Worker
- NotificationWorker
- который показывает уведомление на устройстве, и я устанавливаю дату и время для его отображения, используя WorkRequest
.
Это мойметод для постановки в очередь WorkRequest
, который вызывается в классе пользовательского интерфейса (в моем приложении это фрагмент):
fun notifyUserAt(dt: LocalDateTime, title: String, text: String) {
val epoch = DateUtil.toEpochMilli(dt)
val now = DateUtil.toEpochMilli(
ZonedDateTime.now(AppRepository.zoneId).toLocalDateTime()
)
val delay = epoch - now + 10
val data: Data = Data.Builder()
.putString(NOTIF_TITLE, title)
.putString(NOTIF_CONTENT_TEXT, text)
.putLong(NOTIF_DATETIME, epoch)
.build()
val constraints: Constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.NOT_REQUIRED)
.setRequiresCharging(false)
.build()
val notificationWork = OneTimeWorkRequestBuilder<NotificationWorker>()
.setInputData(data)
.setConstraints(constraints)
.setInitialDelay(delay, TimeUnit.MILLISECONDS)
.build()
WorkManager.getInstance().enqueue(notificationWork)
}
Обратите внимание, что переменная delay установлена в 10 миллисекунд (очень близко к отсутствию задержки) при тестировании.
Это мой класс Worker:
class NotificationWorker(val context: Context, params: WorkerParameters) :
Worker(context, params) {
override fun doWork(): Result {
// Get data
val title = inputData.getString(NOTIF_TITLE)
val contentText = inputData.getString(NOTIF_CONTENT_TEXT)
val epoch = inputData.getLong(NOTIF_DATETIME, 0L)
// Build the notification
val mNotification =
NotificationCompat.Builder(context, NORMAL_CHANNEL_ID)
.setContentTitle(title)
.setContentText(contentText)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(overviewScreenIntent(context, epoch))
.setAutoCancel(true)
.build()!!
val id = newNotificationId
NotificationManagerCompat.from(context)
.notify(id, mNotification)
return Result.success()
}
Я установил точку останова при отладке в последней строкеdoWork
метод в моем NotificationWorker
, но программа там не останавливается.Я что-то пропустил?