java - 每次应用启动后执行警报管理器,而不是设置时间段
问题描述
我已经设置了一个警报管理器,以每 24 小时在上午 10:40 下载网络内容,但除了在适当的时间执行之外,显然它会在成功运行应用程序后几秒钟启动。我希望它在设定的时间专门运行。
@Override
public void onReceive(Context context, Intent intent) {
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
DownloadTask task = new DownloadTask();
task.execute("https://api.apify.com/v2/key-value-stores/3Po6TV7wTht4vIEid/records/LATEST?disableRedirect=true");
String contentText = "Nowe zakażenia: " +infectionsInfo+ " Nowe śmierci: "+deathsInfo;
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "notifyLemubit1")
.setSmallIcon(R.drawable.unnamed)
.setContentTitle("Punkty zostały przyznane!")
.setContentText(contentText)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(200, builder.build());
和
calendar1.set(Calendar.HOUR_OF_DAY,10);
calendar1.set(Calendar.MINUTE,40);
Intent intent1 = new Intent(MenuActivity.this, PointsBroadcast.class);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(MenuActivity.this, 0, intent1, 0);
AlarmManager alarmManager1 = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent1);```
解决方案
所有重复的警报都是不准确的,以免轻易让开发人员滥用它们。
如果您希望在该确切时间完成操作,则需要使用一次性警报。要使它们“重复”,您需要首先安排第一个,并在触发警报后始终安排下一个。
虽然您的问题可能是由于这个加上其他一些问题。
确切的警报应该只用于极其重要的任务,所以我建议考虑使用 WorkManager,这样你就不会过多地影响设备的电池。
推荐阅读
- java - 如何在 SpringBoot 中使用 Lambok 依赖项?
- python - Kivy 中的可拖动图像
- arrays - 有人可以用例子解释一下吗?(抽象数据类型)
- java - 一些我看不懂的java错误
- javascript - 如何在 url 中更改部分而不在 vue 中刷新?
- react-native - 我该如何修复这个 expo-cli
- javascript - 如何为我的网站制作 android 主屏幕快捷方式?
- android - 如何在 Spinner 中显示特定值
- javascript - 旋转字体真棒图标
- android - ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 对某些 Android 10 设备没有影响