gpt4 book ai didi

android - MonoDroid - 使用警报管理器的每日预定服务?

转载 作者:行者123 更新时间:2023-11-29 02:04:10 27 4
gpt4 key购买 nike

我正在尝试安排一项服务在用户指定的时间每天运行。我正在使用时间选择器让用户控制服务在一天中的什么时间运行。

每次用户更改服务运行的时间时,我都会更新警报管理器。

这是我的代码:

void RescheduleOpeningRatesRetriever (string strTime)
{
var i = new Intent (this.ApplicationContext, typeof (OpenRatesService));
var src = PendingIntent.GetService (this.ApplicationContext, 0, i, PendingIntentFlags.UpdateCurrent);
var am = (AlarmManager)this.ApplicationContext.GetSystemService (Context.AlarmService);

var hour = TimePickerPreference.GetHour (strTime);
var minute = TimePickerPreference.GetMinute (strTime);

var cal = Java.Util.Calendar.GetInstance (Java.Util.TimeZone.Default);
cal.Set (Java.Util.CalendarField.HourOfDay, hour);
cal.Set (Java.Util.CalendarField.Minute, minute);

am.SetRepeating (AlarmType.RtcWakeup, cal.TimeInMillis, AlarmManager.IntervalDay, src);
}

我不能 100% 确定代码是否安排服务正常运行,因为我的测试结果好坏参半。

我现在遇到的问题是每次我重新安排服务使用上面的代码运行时,服务都会立即启动....我不想在一天中配置的时间之前启动服务.

如何安排和更新服务以在一天中的指定时间运行,而不是在使用警报管理器安排服务后立即运行服务?

最佳答案

如果您设置闹钟的时间是过去的时间,那么闹钟会立即响起。所以首先检查时间是否过去,如果是然后将其设置为第二天。

喜欢::

Calendar rightNow = Calendar.getInstance()

if( cal.after( rightNow ) )
{
am.SetRepeating (AlarmType.RtcWakeup, cal.TimeInMillis, AlarmManager.IntervalDay, src);
}
else
{
cal.roll(Java.Util.CalendarField.DAY_OF_MONTH, 1);
SetRepeating (AlarmType.RtcWakeup, cal.TimeInMillis, AlarmManager.IntervalDay, src);
}

关于android - MonoDroid - 使用警报管理器的每日预定服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10942163/

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