通知仅从服务发送一次

我正在编写一个每隔几秒通知一次的服务,一个通知出现一次,但预期的结果是它通知多次,它在列表中多次出现。


我知道通知 id 必须在多个通知之间更改才能出现多次,因此每次发送通知时我都使用 AtomicInteger 来增加通知 id。


在类的顶部,我声明了以下变量:


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 中没有错误。


摇曳的蔷薇
浏览 136回答 2
2回答

海绵宝宝撒

我建议你在一个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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java