在通知活动中单击返回按钮后,Android打开MainActivity

时间:2018-11-11 06:15:03

标签: android

我正在开发一个应用程序,它将在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元素。

我尽力解释了这个问题,非常感谢您的帮助!!!

1 个答案:

答案 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);