@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String title = bundle.getString("title");
String body = bundle.getString("body");
//打开自定义的Activity
Intent intentNotifi = new Intent(context, NotificationActivity.class);
intentNotifi.putExtra("title", title);
intentNotifi.putExtra("body", body);
intentNotifi.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
context.startActivity(intentNotifi);
}
(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP )导致的.
先说说Intent.FLAG_ACTIVITY_NEW_TASK:
当Intent对象包含这个标记时,系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Activity的taskAffinity属性进行匹配,如果找到一个task的taskAffinity与之相同,就将目标Activity压入此task中,如果查找无果,则创建一个新的task,并将该task的taskAffinity设置为目标Activity的taskActivity,将目标Activity放置于此task。
再说下Intent.FLAG_ACTIVITY_CLEAR_TOP
当Intent对象包含这个标记时,如果在栈中发现存在Activity实例,则清空这个实例之上的Activity,使其处于栈顶。在使用默认的“standard”启动模式下,如果没有在Intent使用到FLAG_ACTIVITY_SINGLE_TOP标记,那么它将关闭后重建,如果使用了这个FLAG_ACTIVITY_SINGLE_TOP标记,则会使用已存在的实例;对于其他启动模式,无需再使用FLAG_ACTIVITY_SINGLE_TOP,它都将使用已存在的实例。
所以
在你的代码里加上这个:intentNotifi.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);就可以了。