0

我在通知中有一个带有关闭按钮的前台服务,它杀死了该服务。当服务启动和用户立即(在一秒钟内)尝试通过单击通知上的关闭按钮来关闭服务。当我根据 Rest Api 调用响应更新此前台服务通知时。在这种情况下,当用户单击关闭并在执行更新通知代码的同时收到 api 响应时,它是一个关闭呼叫。在 Api 响应处理后,通知仍会显示给用户。即使我检查了前台服务是否正在运行,但它仍在更新通知,使用户相信该前台服务没有停止。

以下是创建前台服务的代码:

 Intent intent = new Intent(this, MyActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    String title = "Creating ...";
    intent.putExtra(TASK_ID, -1);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder mBuilder = myNotificationUtil.getBuilder(title, "Calling" + " ..");
    mBuilder.setUsesChronometer(true);
    mBuilder.setContentIntent(pendingIntent);
    Intent stopIntent = new Intent(this, MyService.class);
    stopIntent.setAction(MyIntent.STOP_FOREGROUND);
    PendingIntent stopPlayIntent = PendingIntent.getService(this, 0, stopIntent, 0);
    mBuilder.addAction(R.mipmap.ic_call_end_white_24dp, "Hang Up", stopPlayIntent);
    startForeground(1, mBuilder.build());

以下是更新通知方法:

   private void updateForeGroundNotification(String status) {
        Intent intent = new Intent(this, MyActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        String title = "Updating ...";
        
        intent.putExtra(TASK_ID, task_id);

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder mBuilder = myNotificationUtil.getBuilder(title, status + " ..");
        mBuilder.setUsesChronometer(true);
        mBuilder.setContentIntent(pendingIntent);
        Intent stopIntent = new Intent(this, MyService.class);
        stopIntent.setAction(MyIntent.STOP_FOREGROUND);
        PendingIntent stopPlayIntent = PendingIntent.getService(this, 0, stopIntent, 0);
        mBuilder.addAction(R.mipmap.ic_call_end_white_24dp, "Hang Up", stopPlayIntent);
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(1, mBuilder.build());
    }

我必须在通知中的 api 调用后更新通知的标题

4

0 回答 0