code: private void createNotification(UploadInfo uploadInfo) {
          if (params.notificationConfig == null || params.notificationConfig.getProgress().message == null)
              return;
  
          UploadNotificationStatusConfig statusConfig = params.notificationConfig.getProgress();
          notificationCreationTimeMillis = System.currentTimeMillis();
  
          NotificationCompat.Builder notification = new NotificationCompat.Builder(service, params.notificationConfig.getNotificationChannelId())
                  .setWhen(notificationCreationTimeMillis)
                  .setContentTitle(Placeholders.replace(statusConfig.title, uploadInfo))
                  .setContentText(Placeholders.replace(statusConfig.message, uploadInfo))
                  .setContentIntent(statusConfig.getClickIntent(service))
                  .setSmallIcon(statusConfig.iconResourceID)
                  .setLargeIcon(statusConfig.largeIcon)
                  .setColor(statusConfig.iconColorResourceID)
                  .setGroup(UploadService.NAMESPACE)
                  .setProgress(100, 0, true)
                  .setOngoing(true);
  
          statusConfig.addActionsToNotificationBuilder(notification);
  
          Notification builtNotification = notification.build();
  
          if (service.holdForegroundNotification(params.id, builtNotification)) {
              notificationManager.cancel(notificationId);
          } else {
              notificationManager.notify(notificationId, builtNotification);
          }
      }
docs: If the upload task is initialized with a notification configuration, this handles its
  creation.
  
  @param uploadInfo upload information and statistics