当前位置: 首页 > 知识库问答 >
问题:

如何在不同的时间设置多个通知?

葛子昂
2023-03-14

这是我的问题:我有通知列表,希望在不同的时间显示它们,但它们同时显示在一起。

第一次调用updateLabel函数:

私有空updateLabel(ArrayList通知实体){

    int timer = 5000;

    for (int i = 0; i < notificationEntities.size(); i++) {

        Notification notification = addNotification(notificationEntities.get(i));
        scheduleNotification(notificationEntities.get(i).getId(), notification, (long) timer);

        timer += 10000;
    }

}

然后创建通知:

私人通知add NotificationEntity(NotificationEntity){

    NotificationCompat.Builder notification = new NotificationCompat.Builder(this, default_notification_channel_id)
            .setSmallIcon(R.drawable.ic_baseline_android_24)
            .setContentTitle("Notifications Example")
            .setContentText("This is a test notification for " + notificationEntity.getType() + " with id " + notificationEntity.getId())
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_REMINDER)
            .setVibrate(new long[]{0, 1000, 1000})
            .setChannelId(NOTIFICATION_CHANNEL_ID);

    return notification.build();
}

然后安排通知:

私有void scheduleNotification(int notificationId、通知通知、长延迟){

    int requestID = (int) System.currentTimeMillis();

    Intent notificationIntent = new Intent(this, NotificationPublisher.class);

    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, notificationId);
    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION, notification);

    PendingIntent pendingIntent = PendingIntent
            .getBroadcast(this, requestID, notificationIntent, PendingIntent.FLAG_ONE_SHOT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, delay, pendingIntent);

}

这是我的NotificationPublisher类:

公共类通知Publisher扩展BroadcastRecector{

public static final String NOTIFICATION = "myNotification";
public static final String NOTIFICATION_ID = "myNotification-id";
@Override
public void onReceive(Context context, Intent intent) {


    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = intent.getParcelableExtra(NOTIFICATION);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){

        NotificationChannel channel = new NotificationChannel(ClientHomepage.NOTIFICATION_CHANNEL_ID, "Channel", NotificationManager.IMPORTANCE_HIGH);
        channel.setDescription("This is just notification");
        notificationManager.createNotificationChannel(channel);

    }
    int id = intent.getIntExtra(NOTIFICATION_ID, 0);
    notificationManager.notify(id, notification);
}

我的问题是所有通知同时出现,而不是一个接一个地出现。我尝试过更改requestID,但没有帮助,我也尝试过更改PendingEvent标志,这也没有帮助。希望你有什么建议。

共有1个答案

濮丰
2023-03-14

据我所知,您在这行代码中添加了错误的时间

通知ntities.get(i). getId(),通知,(长)定时器);

您必须添加系统,而不是(长)计时器。currentTimeinMillis()计时器它将解决您的问题

 类似资料:
  • 我现在有每天重复的通知,每天下午6点重复。我想做的是不是6pm,而是在事件即将开始时显示通知。我有一个events arraylist,它包含日期和时间,这是可能的。下面是我当前显示通知的方式。 这是我主要的activity 这是在我的broadcast_reciever课上 公共类AlarmReceiver扩展了 我不确定如何设置时间,所以它会重复什么时候和如果有一个事件。感谢您的任何指点和帮助

  • 我试图用两个CacheManager设置一个spring-boot应用程序,代码如下: 但是当我启动应用程序时,它总是失败,出现以下错误: 由:java.lang.IllegalStateException引起:当预期只有1个CachingConfigurer实现时,发现了2个。重构配置,使CachingConfigurer只实现一次或根本不实现。在org.springframework.cach

  • 问题内容: 我知道这个问题以前曾被问过,但我已不知所措。 我有一个警报管理器来设置通知: …然后我得到了通知本身即服务: } ....我加入了吐司,以确保我确实要使用此方法。敬酒,但通知没有。我在这里做错了什么?我需要更改清单文件中的内容吗? 问题答案: 没有图标(或标题是?)的通知将不起作用。 我确信我遇到了同样的问题,因为如果您忽略了通知的内容之一,则通知将不会显示。

  • 问题内容: 我有一个ListView,它显示TextViews的列表。我希望每个TextView以适当的字体显示。作为字体String []数组的一部分出现在ListView中的字体名称的拼写与创建字体时的拼写相同。 和XML: 为什么我不能在ListView中获得每个TextView正确的字体? 问题答案:

  • 问题内容: 问题答案: 在您的项目中创建一个新的Swift Source文件以放置扩展

  • 问题内容: 我已经按照kuester2000的回答进行了操作,但是我的超时设置似乎不起作用。 但是,超时值不变。 在我链接的答案中,它还说: 连接超时抛出“ java.net.SocketTimeoutException:套接字未连接”,套接字超时抛出“ java.net.SocketTimeoutException:操作超时”。 但是我都没有。相反,我收到“ org.apache.http.co