我有一个在后台运行的服务,在某些时间段我使用通知创建通知,当用户点击通知时,它会打开一个Activity(SurveyForm)。我想在用户按下按钮但关闭后台服务时关闭该Activity。我在Activity中调用finish()方法,但不是完全关闭它,Application仍然存在于最近的应用程序列表中。
这是创建通知的代码。
Intent notificationIntent = new Intent(this, SurveyForm.class);
notificationIntent.setAction(Constants.SURVEY_ACTION);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("Survey")
.setTicker("New Survey")
.setContentText("Please, answer the survey.")
.setSmallIcon(R.drawable.survey_notification_icon)
.setSound(alarmSound)
.setLights(0xff00ff00, 1000, 1000)
.setContentIntent(resultPendingIntent)
.setOngoing(true)
.build();
notification.defaults = Notification.DEFAULT_VIBRATE;
mNotificationManager.notify(Constants.SURVEY_NOTIFICATION_ID, notification);
按钮代码如下:
bSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//Close the notification
nm.cancel(Constants.SURVEY_NOTIFICATION_ID);
//Close this Activity
finish();
}
});
更新
我通过在清单文件中为相应的Activity指定下一个属性来解决问题。
机器人:excludeFromRecents = “真”
答案 0 :(得分:2)
我通过在清单文件中为相应的Activity指定excludeFromRecents属性来解决问题。
机器人:excludeFromRecents ="真"
答案 1 :(得分:0)
致电finishAndRemoveTask()
而非finish()