我的AlarmManager是否可以在达到设置的时间,而不是在第一次重复之后触发第一个警报?

问题描述 投票:0回答:1

对于我的应用,我想在午夜触发警报,并每隔一个午夜定期触发一次警报,以重置一些变量。我尝试过警报管理器来实现。警报是否有可能在到达午夜的第一时间触发,而不仅仅是在随后的午夜?我的实际代码正在工作,但不适用于我想要实现的代码。我现在设置时间,并将测试时间重复为60秒。

在我的日志输出中,例如:

  • 20.01.2020_14:15:00 我想要一个警报
  • 20.01.2020_14:16:00:警报
  • 20.01.2020_14:17:00:警报

因此,当达到设定时间时,可以在第一时间直接触发警报吗?还是有人有解决方法或任何提示或提示,我该如何实现?

我设置闹钟的功能

public void midnightAlarm() {
 AlarmManager alarmMgr;
        PendingIntent alarmIntent;

        alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, MidnightAlarmReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);


        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 15);
        calendar.set(Calendar.MINUTE, 15);


        alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                1000 * 60 , alarmIntent);

    }

我的接收者类别:

public class MidnightAlarmReceiver extends BroadcastReceiver {

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

           writeToFile("ALARM");
           //reset my Variables

    }
}

android alarmmanager repeatingalarm
1个回答
0
投票
public void midnightAlarm() {

         AlarmManager alarmMgr;
         PendingIntent alarmIntent;

        alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, MidnightAlarmReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);


        // Set the alarm to start at 8:30 a.m.
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);



        alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);


    }

接收器

public class MidnightAlarmReceiver extends BroadcastReceiver {

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

           GlobalVariables.writeToFile("ALARM");
           midnightAlarmREDO(context);
    }



    public void midnightAlarmREDO(Context context) {

        AlarmManager alarmMgr;
        PendingIntent alarmIntent;

        alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, MidnightAlarmReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

// zeit neu berechnen

        alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime() +
                        60 * 1000, alarmIntent);


    }
}
© www.soinside.com 2019 - 2024. All rights reserved.