打开对话框 activity 时,如果在堆栈中,启动器 activity 始终显示在下方

When opening dialog activity, the launcher activity always shows below if in the stack

我写了一个对话框activity,它可以在点击通知时触发,比如图片1。但如果启动器 activity 在堆栈中,它将出现在对话框下方,就像图 2 一样。如果没有,对话框activity将单独显示,这就是我想要的,如图3。 谁能告诉我为什么?

对话框activity使用如下自定义样式:

<style name="DialogTransparent" parent="Theme.AppCompat.Light.Dialog">
    <item name="windowNoTitle">true</item>
</style>

下面是通知生成器代码:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setAutoCancel(false).setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.todo_logo)).setSmallIcon(getNotificationIcon()).setContentText(getString(R.string.notificatioin_new_task)).setOngoing(true);
Intent alarmIntent = new Intent(this, DialogEventActivity.class);
PendingIntent alarmPendingIntent = PendingIntent.getActivity(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(alarmPendingIntent);
manager.notify(NEW_NOTIFICATION_ID, mBuilder.build());

我认为 Activity 的代码无关紧要,对吗?

如果从ActivityA到ActivityB,且B是Dialog的子类Activity或者其主题设置为对话框,B将作为对话框显示在A之前, A 也是可见的,如果您的应用程序不在前台并且您启动 Activity B,它将把您的整个应用程序带到前台,在您的 app.So 您的 Activity B 中进行所有活动以及您最后一次可见 activity 离开时,您的应用将同时可见。

因此,为了实现您的目标,您应该让您的 Activity B 作为普通 activity,而不是 DialogActivity 的子类,并为此设置布局背景 activity 设置为透明并将您的 contentView 设置在屏幕中央。

答案就在这里:

在提问之前真的应该google更多...