gpt4 book ai didi

android - 传递给未决 Intent 时,静态方法中的 Intent 为空

转载 作者:行者123 更新时间:2023-11-29 01:35:36 24 4
gpt4 key购买 nike

我目前几乎完成了我正在开发的应用程序,除了一个新的障碍。

我的应用程序包含一个按预期触发的服务警报,其中的 Intent 在它们设置的确切时间工作,其他一切工作正常。但是,我的应用程序有菜单按钮,可让您打开和关闭它。它在 IntentService 中调用此方法以检查它是否应显示为“打开警报”或“关闭警报”,具体取决于返回的 bool 值是什么。用户的选择(他们希望它打开或关闭)也保存在共享首选项中,这也从我的日志语句告诉我的内容中正确保存。问题是,当设备重置时,应用程序中的所有内容都正常工作,首选项已保存,除了在应用程序首次运行时重置后此方法返回 false 之外,因此菜单项无法正确更新。

在重置时,菜单按钮显示“打开警报”,即使它实际上已经打开,因为下面的方法返回 false。如果我单击一次,警报将关闭,但文本不会更改,但按钮可以正常工作。如果我第二次单击它,下一个将按预期更改为“关闭警报”,警报将重新打开,然后按预期工作。下面是有问题的方法,在调试时显示我创建的 Intent 中的所有内容在传递到 PendingIntent 时都是空的,但我不明白为什么。

public static boolean isServiceAlarmOn(Context context)
{
Intent i = new Intent(context.getApplicationContext(), CommuteCheckAlarmService.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_NO_CREATE);
Log.i(ALARM_SERVICE, "Checking isServiceAlarmOn, pi is NOT null is " + (pi != null) + "and the intent is not null" + (i != null));
return pi != null;
}

有人知道是什么导致设备重置时出现这种行为吗?我在模拟器上运行它,关闭闹钟的首选项也正确保存。

更新:特别是当我通过运行为 Android 应用程序在模拟器上运行我的应用程序时,而不是像普通用户那样只是打开模拟设备并在设备内启动应用程序时,特别会发生莫名其妙的行为。有谁知道为什么上述行为特别发生在运行为 Android 应用程序期间?

最佳答案

当设备重新启动或您的应用程序被卸载时,其所有 PendingIntent 和警报都将被删除。这是正常行为。

关于android - 传递给未决 Intent 时,静态方法中的 Intent 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319169/

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