gpt4 book ai didi

Android - 长时间后有时不会触发警报

转载 作者:行者123 更新时间:2023-11-29 13:59:03 25 4
gpt4 key购买 nike

我的应用程序出现了几天的大问题。如果我的英语事先不是那么母语,我深表歉意。我实现了一个 AlarmManager,让我的应用程序的用户可以选择在当前或第二天的任何时间启动某个服务。所以例如用户可能会选择将我的服务时间设置为明天上午 8:00,然后启动服务。

警报管理器现在应该等待从现在到选定时间的计算时间(我也手动计算了时间,它是正确的!),然后启动服务。我现在的问题是,有时 alarmmanager 正在启动我的服务,有时却没有。似乎如果它必须等待让我们说超过 4 小时,它就不再工作了,我的服务也没有被调用。我已经设置了所有必要的权限,否则它根本无法工作。你可以看看下面的 alarmmanager 的代码:

someIntent = new Intent();
someIntent.setAction("START_SERVICE");
AlarmManager alarams ;

alarmIntent = PendingIntent.getBroadcast(MainActivity.this, 0, someIntent, PendingIntent.FLAG_CANCEL_CURRENT);
alarams = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarams.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+delay, alarmIntent);

广播接收器是这样实现的(并且已经注册了!):

alarmReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {

Intent myIntent = new Intent(MainActivity.this, MyService.class);
startService(myIntent);
}
};

正如我告诉过你的,如果它不工作,它会在启动服务之前停止。

编辑:我有个主意。我在这个线程中读到了一些东西:Android long running service with alarm manager and inner broadcast receiver

可能是,我的 Intent “someIntent”的构造函数仅适用于 list 文件中声明的 BroadcastReceivers。所以在我的例子中,我应该使用 someIntent = new Intent("START_SERVICE") 而不是 someIntent = new Intent(); someIntent.setAction("START_SERVICE")。这种效果称为隧道 - 我会弄清楚,如果它有效,我会在这里发布我的经验。感谢您对上述主题的详细解释!如果您有任何其他想法或与我相同的经历,请告诉我!电驴

最佳答案

如果设备关闭并启动,那么您将不会收到警报管理器广播接收器。实现 OnBootReceiver,它将接收已完成的 OnBoot,您可以在那里启动未触发的未决警报。

关于Android - 长时间后有时不会触发警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10531451/

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