gpt4 book ai didi

Android - 单击状态栏中的通知将 Intent 与目标 Activity 绑定(bind)

转载 作者:行者123 更新时间:2023-11-29 16:27:14 33 4
gpt4 key购买 nike

我创建了一个向状态栏发送大量通知的 Activity 。每个通知都包含一个带有 bundle 的 Intent 。这是代码:

 String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.icon;
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, "Test Notification", when);


Context context = getApplicationContext();

Bundle bundle = new Bundle();
bundle.putString("action", "view");
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.putExtras(bundle);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(1, notification);

当用户单击此通知时,我会读取 bundle 字符串“action”并执行该操作。这是代码:

 Bundle bundle = this.getIntent().getExtras();

if(bundle != null)
{
String action = bundle.getString("action");
performAction(action)
}

一切都按预期进行。但是,当我使用设备上的“箭头”按钮最小化应用程序,然后按住主页按钮并单击我的应用程序图标时,应用程序启动并执行与单击最后一个通知相同的最后一个操作。我发现当我们单击应用程序图标时,应用程序会以通知触发的最后一个 Intent 启动。任何人都可以帮忙吗?

最佳答案

首先,“向状态栏发送大量通知的 Activity ”对于生产应用程序来说是一个糟糕的设计。一个Activity用户界面已经呈现在用户面前,因此不需要 Notifications .即使您是从 Service 执行此操作的,绝大多数 Android 应用程序不需要超过一个 Notification一次。

针对您的具体问题,您认为您正在创建多个 PendingIntents ,但你不是。默认情况下,一个不同的 PendingIntent仅在底层 Intent 时创建与 Intent 有本质区别被另一个优秀的人使用PendingIntent .你的只是额外的不同。如果你打算有几个优秀的PendingIntents , 你需要让它们在不同的 Intents 上,那些Intents因组件、操作、数据 (Uri) 或类别而异。

关于Android - 单击状态栏中的通知将 Intent 与目标 Activity 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2514750/

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