提问者:小点点

PeriodicRequest不工作。 我尝试每15分钟发送一次通知,但不起作用


所以我使用PeriodicRequest每15分钟向我发送一次通知,但它根本没有出现。 一旦我杀死了应用程序,强制关闭的选项就会被禁用。 这难道不意味着没有后台进程在运行吗? 这就是我的通知不显示的原因吗?

    PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder((BackgroundWork.class),
            15, TimeUnit.MINUTES).build();
    WorkManager.getInstance(this).enqueue(periodicWorkRequest);

下面的代码来自BackgroundWork类。

    public Result doWork() {
    NotificationCompat.Builder alertNotify = new 
    NotificationCompat.Builder(context1,"101")
            .setContentTitle("Test")
            .setContentText("Test notif")
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setSmallIcon(R.drawable.virus)
            .setVisibility(NotificationCompat.VISIBILITY_PRIVATE)
            .setAutoCancel(true); //removes notification when user clicks

    NotificationManagerCompat notificationManager = 
    NotificationManagerCompat.from(context1);
    notificationManager.notify(28,alertNotify.build());
    DataParser download = new DataParser(context);
    download.execute("https://api.covid19api.com/summary");
    return Result.success();

共1个答案

匿名用户

您似乎还没有设置要添加通知的通知通道。 作为测试,是否可以在NotificationCompat.Builder安装之前添加此代码?

//Kotlin
val notificationManager = NotificationManagerCompat.from(context)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    notificationManager.createNotificationChannel(NotificationChannel("101", "Test", NotificationManager.IMPORTANCE_DEFAULT))
}

//Java
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context1);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    notificationManager.createNotificationChannel(new NotificationChannel("101", "Test", NotificationManager.IMPORTANCE_DEFAULT));
}

在Android 8.0(API级别26)中必须将通知分配给通道。 请参阅此处的NotificationChannel文档

这很可能是通知没有显示在您的设备上的原因,但工作人员肯定仍在工作。 您可以在Debug output和Logcat窗口中看到工作人员所做工作的一些日志。 下面可以看到我自己测试的一些例子:

//Debug log
I/WM-WorkerWrapper: Worker result SUCCESS for Work [ id=aa30d1f6-8683-43b8-bf6d-67e7b38a6d75, tags={ com.test.stackoverflowtest.BackgroundWork } ]

//Logcat
2020-06-20 15:02:23.743 4827-4899/com.test.stackoverflowtest I/WM-WorkerWrapper: Worker result SUCCESS for Work [ id=aa30d1f6-8683-43b8-bf6d-67e7b38a6d75, tags={ com.test.stackoverflowtest.BackgroundWork } ]