gpt4 book ai didi

android - WorkManager 在工作完成后保持通知

转载 作者:行者123 更新时间:2023-12-04 23:55:19 26 4
gpt4 key购买 nike

我想在 Worker 在后台运行时显示通知。我可以用下面的代码来做到这一点:

override suspend fun doWork(): Result {
val manager = NotificationManagerCompat.from(applicationContext)
val channel = "some_channel"
val id = 15
val builder = NotificationCompat.Builder(applicationContext, channel)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
manager.createNotificationChannel(NotificationChannel(channel, "DefaultName", NotificationManager.IMPORTANCE_LOW))

builder
.setOnlyAlertOnce(true)
.setOngoing(true)
.setAutoCancel(false)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setSmallIcon(android.R.drawable.ic_dialog_alert)
.setTicker("Background Task")
.setContentText("Starting")
.setProgress(0, 0, true)

setForeground(ForegroundInfo(id, builder.build()))

delay(500)

manager.notify(id, builder.setContentText("Progress A").setProgress(20, 0, false).build())
for (i in 1..20) {
delay(100)
manager.notify(id, builder.setProgress(20, i, false).build())
}

delay(500)

manager.notify(id, builder.setContentText("Progress B").setProgress(2, 0, false).build())
delay(1000)
manager.notify(id, builder.setProgress(2, 1, false).build())
delay(1000)
manager.notify(id, builder.setProgress(2, 2, false).build())

delay(1000)

manager.notify(id, builder.setContentText("Done!").setProgress(0, 0, false).build())

delay(500)

return Result.success()
}

但我也想在通知中显示工作人员的结果并保留它直到用户看到并清除它,但通知总是在工作结束时清除。

如何使通知保持有效? .setOngoing(true).setAutoCancel(false)没有帮助。

最佳答案

我认为我发现的一种更简单的方法是使用不同的 id 通知最终通知(使用 .setOngoing(false)):

manager.notify(
id + 1,
builder.setContentText("Done!")
.setAutoCancel(true)
.setOngoing(false)
.build()
)
return Result.success()

或者,稍微延迟后发送:

CoroutineScope(Main).launch {
delay(200)
manager.notify(
id,
builder.setContentText("Done!")
.setAutoCancel(true)
.setOngoing(false)
.build()
)
}
return Result.success()

关于android - WorkManager 在工作完成后保持通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com