我正在开发一个应用程序,它将在MainActivity的Recycler视图内显示Card View的列表。在点击卡片视图时,它将启动其他活动。流是 SplashScreenActivity-> MainActivity(回收者视图)-> DetailsActivity 如果我们通过单击应用程序图标启动应用程序,则流程运行正常。
作为此应用程序的一部分,我正在向该应用程序发送FCM通知。每当收到通知时,都会启动DetailsActivity,在此期间MainActivity不会在堆栈中。每当按下Details Activity的后退按钮时,我都会盯着MainActivity。如果未从Notification中调用DetailsActivity,则不会再次调用MainActivity。
下面是我为处理“详细信息活动”中的“后退”按钮而编写的代码段。
@Override
public void onBackPressed() {
if (isFromNotification) {
System.out.println("Start from Notification");
Intent intent = new Intent(this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
super.onBackPressed();
startActivity(intent);
}else {
System.out.println("Start from Normal Mode");
super.onBackPressed();
}
}
我在这里有两个问题。
i)收到FCM后,在DetailsActivity中查看通知。按下后退按钮后,将启动MainActivity,并且不会杀死DetailsActivity。再次按下MaainActivity的后退按钮后,将启动Details Activity。
ii)每当MainActivity在收到通知后启动时(通过单击Details Activity的后退按钮),都无法单击recyclerview元素。
我尽力解释了这个问题,非常感谢您的帮助!!!
答案 0 :(得分:1)
您在FCM消息显示的通知中包含的PendingIntent
可以描述一个Backstack,其中MainActivity位于DetailsActivity下方。
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntent(new Intent(context, MainActivity.class));
stackBuilder.addNextIntent(new Intent(context, DetailsActivity.class));
PendingIntent notificationIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);