gpt4 book ai didi

java - Android AlarmManager 随机触发

转载 作者:行者123 更新时间:2023-12-01 12:20:10 24 4
gpt4 key购买 nike

我正在开发一个应用程序,它必须显示一些通知,并且必须每天两次下载一些数据,因此我创建了一个用于启动通知的服务和一个应该(取决于那时)运行我的 NotificationService,然后运行我的 DownloadService。我现在的问题是,我创建的 AlarmManager 警报应该每小时调用一次(如果少或多 1 或 2 分钟并不重要),并且它会执行大约 3 到 4 小时,但随后它会随机运行,并且还会多次运行例如 7 点到 8 点之间。

我不知道问题出在哪里,所以这是我的代码:

Activity :

Intent myIntent = new Intent(OverviewActivity.this, Receiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(OverviewActivity.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, notifCal.getTimeInMillis(), AlarmManager.INTERVAL_HOUR, pendingIntent);

接收者:

public class Receiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent arg1) {
Intent notificationService = new Intent(context, NotificationService.class);
context.startService(notificationService);<br/>
}

}

提前致谢,momob114

最佳答案

每次您的 Activity 被触发时,您的应用程序都会取消并重新创建警报,这可能是看似随机调用的原因(实际上可能对应于您打开应用程序的时间,或一小时后)。

请注意,如果您仍然想这样做,您可以调用:

,而不是取消之前的闹钟
PendingIntent pendingIntent = PendingIntent.getBroadcast(OverviewActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

另请记住,重新启动设备将清除您可能设置的所有警报。因此,您可能需要创建一个 BroadcastReceiver 来监听 android.intent.action.BOOT_COMPLETED 操作,以便设置重复闹钟。

关于java - Android AlarmManager 随机触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26723559/

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