gpt4 book ai didi

Android alarmmanager 不是很可靠

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:20 25 4
gpt4 key购买 nike

我对 Android 的 Alarmmanager 功能有疑问。

问题是等待一个多小时左右的警报无法响起。

我的应用程序最初会像这样创建一个警报:-

PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, mCal.getTimeInMillis(), sender);

当警报响起时,它会触发我的 RecieverHandler 类,特别是这个函数:-

public void onReceive(Context context, Intent intent) 
{
try {
Bundle bundle = intent.getExtras();


Intent newIntent = new Intent(context, MessageDispatcher.class);
newIntent.putExtras(bundle);
// newIntent.addFlags(Intent.FLAG);
context.startService(newIntent);



} catch (Exception e) {
Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
e.printStackTrace();

}


}

这将启动一个名为 MessageDispatcher 的服务,这个函数被调用:-

public int onStartCommand(Intent intent, int flags, int startId)

这个函数从我的数据库中获取下一个闹钟时间,我确信它工作正常,然后它根据数据库中的日期设置一个新的闹钟,如下所示:-

PendingIntent sender = PendingIntent.getBroadcast(this, 192837, newIntent, PendingIntent.FLAG_UPDATE_CURRENT);


AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, mCal.getSendAt().getTimeInMillis(), sender);

这会为下一条消息创建警报。

我已经在很短的时间内对此进行了测试,它似乎可以正常工作,并且通过更改手机中的日期和时间对它进行了长时间的测试。它似乎成功发射。

然后当这个闹钟响起时,它会得到下一个闹钟响起并安排它。我几乎 100% 确定这些部件工作正常。

所以我只坚持一些为什么它不起作用的理论。

我认为这可能与我断开手机与调试器的连接有关,但在这种情况下警报似乎会在很短的时间内起作用。

所以我的主要理论是我正在创建的 alarmmanager 在一定时间后被删除?如果这是真的,那将是一个大问题,因为无论经过多长时间,我都需要它正常工作。

非常感谢任何有助于确保我的警报保持不变的帮助,谢谢。

最佳答案

So my main theory is that the alarmmanager I am creating is being deleted after a certain amount of time?

已注册的警报将保持注册状态,直到您取消它们,或直到下一次重新启动,或直到用户在 Android 2.1 及更早版本上使用“任务 killer ”终止您的应用程序。

您还没有指出:

  • 您如何确定闹钟是否“响起”
  • BroadcastReceiver 正在做什么

没有这些信息,就不可能说出哪里出了问题。

确保您在 BroadcastReceiver 中完成所有工作(如果工作很快),或者在传递控制权时维护您自己的 WakeLock到正在执行其余工作的 IntentService。查看WakefulIntentService了解更多。

此外,您可以尝试为每个警报创建唯一的 Intents,而不是更新当前的警报。我不知道这里有什么特别的问题,但这让我很紧张。

关于Android alarmmanager 不是很可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828324/

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