gpt4 book ai didi

android - 按下 Home 键后启动的 PendingIntent 不正确

转载 作者:太空狗 更新时间:2023-10-29 13:38:59 25 4
gpt4 key购买 nike

我有两个(或更多)小部件,例如A 和 B,它们应该启动相同的 Activity ,将 Intent extras 中的 appWidgetId 传递给 Activity 。这在从任何小部件首次启动时安装应用程序后工作正常( Activity 收到正确的 appWidgetId)。如果我在 Activity 启动后按后退按钮并从不同的小部件启动 Activity ,它也可以正常工作。但是,如果我从小部件 A 启动 Activity ,点击主页按钮,然后从小部件 B(或 C 或 D...)启动 Activity ,它将使用 A 的 appWidgetId 启动。我对如何解决这个问题感到困惑。以下是我声明我的 PendingIntent 的方式:

Intent intent = new Intent(context, WidgetActivity.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setAction(this.getClass().getName() + System.currentTimeMillis());
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);

如果我理解正确,我就成功地为每个小部件设置了唯一的 PendingIntents。非常感谢任何帮助!

编辑:this question 的公认答案建议:

I believe the problem is that you have a PendingIntent that only differs by extra. PendingIntents are cached, so if you use two with the same action and data, they'll overwrite each other.

但是,我的代码会创建要执行的随机操作,因此我认为我的 PendingIntents 的不同之处不仅仅是额外的

最佳答案

看来我需要复习一下我的 Activity 生命周期事件。答案是将以下代码放入我的 Activity 中:

@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
super.onNewIntent(intent);
}

问题在于,在按下 Home 按钮时,Activity 会保留启动它的原始 Intent。然后,当另一个小部件启动 Activity 时,原始 Intent 被重用。上面的代码只是用新的 Intent 替换了原始 Intent ,并继续处理剩余的生命周期事件。

关于android - 按下 Home 键后启动的 PendingIntent 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7965276/

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