情景:
我想要的是什么:
实际发生的事情:
显示了活动A的新实例。 如果我点击后退,A关闭,旧B出现。 我必须再次点击返回#3和#4
我在通知的动作意图中使用了意图标志FLAG_ACTIVITY_CLEAR_TOP。我还尝试了FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK。我已将这两个活动设置为SingleTop launchMode。
我做错了什么?为什么即使我使用旗帜,B(顶部)也不会被清除。
活动A和B的显示:
<activity
android:name=".A"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".B"
android:parentActivityName=".A"
android:launchMode="singleTop">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".A" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
显示通知的服务:
Intent contentIntent = new Intent(this,A.class);
contentIntent.setAction(MYACTION);
contentIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentPendingIntent = PendingIntent.getActivity(this, notificationId, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(MyApplication.getContext())
.setContentTitle("text")
.setContentText("text")
.setSmallIcon(R.drawable.icon)
.setContentIntent(contentPendingIntent);
NotificationManager notificationManager = (NotificationManager) MyApplication.getContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationId,notificationBuilder.build());
[编辑2014年10月15日]:现在按预期工作,完全没有任何改变。即使我删除了标志和singletop启动模式,它仍然有效。我不知道为什么。这很奇怪。
答案 0 :(得分:0)
添加此代码段
@Override
public void onBackPressed() {
super.onBackPressed();
}
如果它不适合你,我会给出另一个解决方案
答案 1 :(得分:0)
使用set flag尝试它,如下所示 -
Intent contentIntent = new Intent(this,A.class);
contentIntent.setAction(MYACTION);
contentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
contentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);