gpt4 book ai didi

android - 清除旧 Activity ,这样它们就不会出现在新 Activity 中点击

转载 作者:行者123 更新时间:2023-11-30 03:15:27 24 4
gpt4 key购买 nike

所以我在状态栏中有一个通知,当用户单击该通知时,它会弹出一个没有标题的 Activity ,以复制一个对话框。但我有一个问题。如果我打开应用程序,只需单击主页按钮,然后单击状态栏中的通知。它会显示应用程序的主要 Activity ,通知 Activity 堆叠在顶部。我想要做的是,当我点击通知时,它会清除所有底部 Activity ,这样就不会发生。这是我用来启动通知 Activity 的代码

// Send Notification
Intent intent1 = new Intent(this, Dialog.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_quick_tweet_icon)
.setContentTitle("Dialog")
.setContentText("Touch for more options")
.setWhen(System.currentTimeMillis())
.setContentIntent(pIntent)
.setAutoCancel(false).setOngoing(true);
NotificationManager nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notif = builder.getNotification();
nm.notify(1, notif);

最佳答案

这行不通。你写过:

Intent intent1 = new Intent(this, Dialog.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这意味着“如果 Activity Dialog 已经存在于任务堆栈中,则在启动 Dialog 之前清除(完成)堆栈中位于该 Activity 顶部的所有 Activity > Activity 。否则(如果堆栈中没有 Dialog 实例)只需启动 Dialog Activity ”。因此,您看到的是您的 Dialog Activity 位于任务堆栈中已有的其他 Activity 之上。

如果您希望此通知从任务堆栈中删除所有 Activity ,然后启动您的 Dialog Activity ,我建议您执行以下操作:

像这样创建通知:

Intent intent1 = new Intent(this, MyRootActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent1.putExtra("startDialog", true);

在这种情况下,MyRootActivity 必须是任务的根 Activity (即:在 list 中具有 ACTION=MAIN 和 CATEGORY=LAUNCHER 的 Activity )。

MyRootActivityonCreate() 中执行此操作:

super.onCreate(...);
if (getIntent().hasExtra("startDialog")) {
// User has selected the notification, so we show the Dialog activity
Intent intent = new Intent(this, Dialog.class);
startActivity(intent);
finish(); // finish this activity
return; // Return here so we don't execute the rest of onCreate()
}
... here is the rest of your onCreate() method...

希望这是清楚的。

关于android - 清除旧 Activity ,这样它们就不会出现在新 Activity 中点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com