我有一项服务,当用户执行某项操作时,会使用Service.startForeground(..)将其更改为在前台运行,因为杀死它会对用户造成干扰。
我使用以下代码构建通知以创建其待处理的意图:
Intent topActivityIntent = new Intent(this, topActivityClass);
// Rebuild the task stack
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(topActivityClass);
stackBuilder.addNextIntent(topActivityIntent);
for (int i = 0; i < stackBuilder.getIntentCount(); i++) {
Intent currentIntent = stackBuilder.editIntentAt(i);
// Set flags to tell that we want to re-use the existing
// topActivity if possible
currentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
}
// Adds the Intent to the top of the stack
// Gets a PendingIntent containing the entire back stack
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT);
topActivityClass
是用户当前看到的活动,因为我会让他/她回到相同的活动。
这里的问题是,当用户点击通知时,会创建一个新的Activity
,而不是使用任务堆栈中的那个。
我尝试仅将标志设置为topActivityIntent
和几种标志组合。
我应该使用哪些标志来避免创建新活动?是否可以重复使用堆栈中的活动?
答案 0 :(得分:0)
只需从意图中移除FLAG_ACTIVITY_NEW_TASK
,它就会重复使用现有任务