通知仅从服务发送一次
Notification only sent once from service
我正在编写一个每隔几秒通知一次的服务,一个通知出现一次,但预期的结果是通知多次,在列表中多次出现。
我知道通知 ID 必须在多个通知之间更改才能出现多次,因此我使用 AtomicInteger 来在每次发送通知时递增通知 ID。
在 class 的顶部,我声明了以下变量:
AtomicInteger count;
private Timer timer;
然后在 onCreate() 方法中,我有以下代码:
@Override
public void onCreate() {
count = new AtomicInteger(0);
final NotificationManager notificationManager = (NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE);
timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Notification notification = new Notification.Builder(SiteCheckService.this)
.setContentTitle("Notification")
.setContentText("You should see this notification.")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.build();
notificationManager.notify(count.incrementAndGet(), notification);
}
};
timer.schedule(task, 15000);
}
而onDestroy方法如下:
@Override
public void onDestroy() {
timer.cancel();
timer.purge();
}
我希望通知会发送多次,但只发送了一次。 logcat.
中没有错误
我建议您在 sharedPreferences
元素中使用和存储您的通知
final String Pref_Name = "Notification";
notificationPreferences = context.getSharedPreferences(Pref_Name, Context.MODE_PRIVATE);
editor = notificationPreferences.edit();
notificationCount = notificationPreferences.getInt("notifCountNumber", 0);
在你的 notify()
方法之后
editor.putInt("notifCountNumber",notificationCount+1);
editor.commit();
我使用了 ismail alaoui 的回答中的建议来确保通知 ID 已保存,并且我还将对调度的调用更改为如下三个参数,以便多次调用 TimerTask。
timer.schedule(task, 0, 15000);
我正在编写一个每隔几秒通知一次的服务,一个通知出现一次,但预期的结果是通知多次,在列表中多次出现。
我知道通知 ID 必须在多个通知之间更改才能出现多次,因此我使用 AtomicInteger 来在每次发送通知时递增通知 ID。
在 class 的顶部,我声明了以下变量:
AtomicInteger count;
private Timer timer;
然后在 onCreate() 方法中,我有以下代码:
@Override
public void onCreate() {
count = new AtomicInteger(0);
final NotificationManager notificationManager = (NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE);
timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Notification notification = new Notification.Builder(SiteCheckService.this)
.setContentTitle("Notification")
.setContentText("You should see this notification.")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.build();
notificationManager.notify(count.incrementAndGet(), notification);
}
};
timer.schedule(task, 15000);
}
而onDestroy方法如下:
@Override
public void onDestroy() {
timer.cancel();
timer.purge();
}
我希望通知会发送多次,但只发送了一次。 logcat.
中没有错误我建议您在 sharedPreferences
元素中使用和存储您的通知
final String Pref_Name = "Notification";
notificationPreferences = context.getSharedPreferences(Pref_Name, Context.MODE_PRIVATE);
editor = notificationPreferences.edit();
notificationCount = notificationPreferences.getInt("notifCountNumber", 0);
在你的 notify()
方法之后
editor.putInt("notifCountNumber",notificationCount+1);
editor.commit();
我使用了 ismail alaoui 的回答中的建议来确保通知 ID 已保存,并且我还将对调度的调用更改为如下三个参数,以便多次调用 TimerTask。
timer.schedule(task, 0, 15000);