我在通知中有一个带有关闭按钮的前台服务,它杀死了该服务。当服务启动和用户立即(在一秒钟内)尝试通过单击通知上的关闭按钮来关闭服务。当我根据 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 调用后更新通知的标题