【问题标题】:not create new notification foreground android service不创建新的通知前台android服务
【发布时间】:2017-10-24 10:33:45
【问题描述】:

在创建通知后出现问题,但其他通知未创建和更新最后一个通知。 我想收到新的通知

来电通知方式:

 private void NotificationLoop() {

  // one notification
        G.HANDLER.postDelayed(new Runnable() {
            @Override
            public void run() {
                populateNotification(1, "task id : " + 1, 20);
            }
        }, 2000);
 // two notification
        G.HANDLER.postDelayed(new Runnable() {
            @Override
            public void run() {
                populateNotification(2, "task id : " + 2, 40);
            }
        }, 2000);
// three notification
        G.HANDLER.postDelayed(new Runnable() {
            @Override
            public void run() {
                populateNotification(3, "task id : " + 3, 80);
            }
        }, 3000);


    }

populateNotification 我的服务方法:

 private void populateNotification(int id, String title, int percent) {

        Notification notification;
        Intent CancelIntent = new Intent(this, ServiceDownload.class);
        CancelIntent.setAction(Constant.ACTION.CANCEL_DOANLOAD_ACTION);
        CancelIntent.putExtra("ID", id);
        PendingIntent CCancelIntent = PendingIntent.getService(this, 0, CancelIntent, 0);

        Bitmap icon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

        Intent notificationIntent = new Intent(this, MainActivity.class);
        notificationIntent.setAction(Intent.ACTION_MAIN);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        notification = new NotificationCompat.Builder(this)
                .setContentTitle(title)
                .setTicker(title)
                .setContentText(title)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(Bitmap.createScaledBitmap(icon, 128, 128, false))
                .setContentIntent(pendingIntent)
                .setAutoCancel(false)
                .setOngoing(false)
                .addAction(android.R.drawable.ic_menu_close_clear_cancel, this.getResources().getString(R.string.Cancel), CCancelIntent)
                .setProgress(100, percent, false)
                .setStyle((new NotificationCompat.BigTextStyle().bigText(title)))
                .build();
        startForeground(id, notification);
    }

【问题讨论】:

  • 你在前台启动同样的服务。看起来一项服务只能对 startForeground 使用一个通知。在服务中使用 NotificationManager 而不是 startForeground 显示第二个和第三个通知

标签: android notifications foreground background-foreground


【解决方案1】:

前台服务只有一个通知。

因此,当您致电 startForeground(id, notification); 时,您只需替换它即可。

你没有太多选择来解决你的问题

  1. 创建新通知,与服务无关
  2. 停止前台服务并重新启动它,所以会通知 完全 new 但有可能,用户不会注意到 这是新通知,而不是更新旧通知。
  3. 使用新通知启动新的前台服务。

【讨论】:

    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多