首页 > 解决方案 > 每次应用启动后执行警报管理器,而不是设置时间段

问题描述

我已经设置了一个警报管理器,以每 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);```

标签: javaandroidandroid-studio

解决方案


所有重复的警报都是不准确的,以免轻易让开发人员滥用它们。

如果您希望在该确切时间完成操作,则需要使用一次性警报。要使它们“重复”,您需要首先安排第一个,并在触发警报后始终安排下一个。

虽然您的问题可能是由于这个加上其他一些问题。

确切的警报应该只用于极其重要的任务,所以我建议考虑使用 WorkManager,这样你就不会过多地影响设备的电池。


推荐阅读