首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PendingIntents存储在哪里?使用大陷阱

PendingIntents存储在哪里?使用大陷阱
EN

Stack Overflow用户
提问于 2021-03-28 14:52:57
回答 1查看 43关注 0票数 1

在我的项目中,我尝试了一些PendingIntent的可能性和局限性

所以我创建了一些通知,通过点击打开一个活动

代码语言:javascript
复制
Intent intent = new Intent(this, NotificationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.putExtra(Constants.INTENT_ITEM_NAME, "ItemName");
intent.putExtra(Constants.INTENT_ITEM_ID, itemId);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
// properties set
;

notificationManager.notify(new Random().nextInt(10), notificationBuilder.build());

开始时一切都很好,直到我在NotificationActivity中通过点击通知将其他项目显示出来。

这里开始出现问题:在NotificationActivity中仍然显示了以前的项目。

经过一些搜索之后,它可以通过以下方式解决:

代码语言:javascript
复制
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

但是:如果我在同一时间有许多通知,那么我总是只看到最后一项,PendingIntent是为。

getActivity的第二个参数是requestCode。所以当我更新解决方案时

代码语言:javascript
复制
PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(1000), intent, PendingIntent.FLAG_UPDATE_CURRENT);

此外,还支持许多项,如果由于某种原因随机使我得到相同的数字,那么NotificationActivity中的内容将是相同的。

所以99%的解决方案是好的,是吗?NO

再到第一步

代码语言:javascript
复制
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

如果我设置了,新的临时演员,的意图,->,,旧的临时演员,将被读取。

换句话说,通过new Random().nextInt(1000)在android系统中的某个地方,设备将被存储到1000 PendingIntents作为一个活动,我有永久的

下面是questions

  • 所有的PendingIntents存储在哪里?
  • 如何清除它?

关于如何清除它,我的意思是用一些Random作为requestCode移除所有当前使用的Random,以便在同一时间只发出一个通知就可以使用。

代码语言:javascript
复制
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

有不同的项目

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-30 20:32:37

PendingIntents存储在非持久存储中.当设备重新启动时,它们都消失了。

另外,如果您创建了一个PendingIntent并将其放入一个Notification中,那么一旦Notification消失了(解散、打开等等)。PendingIntent不再使用,将被删除。

通常,您不应该对requestCode使用随机数,因为这不能保证惟一性。您需要找到一种方法,使您的PendingIntent独特,如果您想让其中的许多并行存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66842730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档