gpt4 book ai didi

android - 通过 Intent.putExtra 设置的值不会保留

转载 作者:搜寻专家 更新时间:2023-11-01 08:28:06 26 4
gpt4 key购买 nike

我正在编写一个在后台运行服务的应用程序。该服务接收带有执行某项指令的 Intent ,然后在另一个线程中执行这些操作。 Intent.putExtra() 用于包含有关应该执行的操作的信息。

如果操作失败,则会创建一个通知,向用户表明这一点。通知包含一个“重试”按钮,可用于重试失败的操作。

这是按如下方式完成的,其中intent是最初用于启动服务的Intent:

intent.putExtra(EXTRA_LAST_FAIL, 1234);

new Notification.Builder(context)
...
.addAction(
R.drawable.ic_action_retry,
context.getString(R.string.action_retry),
PendingIntent.getService(context, 0, intent, 0)
)
...

我的期望是,在将新数据(EXTRA_LAST_FAIL)传递给服务时,intent 将包含新数据,但事实并非如此:

int lastFail = intent.getIntExtra(EXTRA_LAST_FAIL, 0);
if (lastFail != 0) {
Log.d(TAG, "action failed last time");
}

但是,尽管上面将值设置为 1234,重新传递的 Intent 不包含 EXTRA_LAST_FAILgetIntExtra() 返回 0。

我做错了什么?

最佳答案

PendingIntent.getService(context, 0, intent, 0)

将其替换为:

PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

如果之前的等效 PendingIntent 仍被认为是未完成的,getService() 会有效地返回现有的 PendingIntentFLAG_UPDATE_CURRENT 将替换额外内容。

关于android - 通过 Intent.putExtra 设置的值不会保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940253/

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