这可能是一个重复的问题,但是我仍然面临着这个问题,希望能有一个解决方案。提前致谢。
如何设置警报管理器运行,以便专门在每15分钟时钟间隔执行一次功能,例如每天8:00、8:15、8:30、8:45、9:00,无论何时何地该应用程序已启动。
举个例子,假设我在7:47开始我的应用程序主要活动,并且我希望闹钟在8:00开始,然后是8:15、8:30等....我应该怎么做?如果有任何建议,我将不胜感激。
您应该设置两个警报管理器。对于第一个警报触发时间,可以通过计算剩余时间到您的适当时间(例如8:00 Am)来设置。然后,您应该在第一个警报管理器中创建另一个警报管理器,该警报管理器每15分钟触发一次。
要计算设置第一个警报管理器的时间,请使用以下代码:
Calendar c = Calendar.getInstance();
int m = calendar.get(Calendar.MINUTE);
long start = System.currentTimeMillis();
int remain=0;
if (m<15)
{
remain = 15-m;
}
else if (m<30)
{
remain = 30-m;
}
else if (m<45)
{
remain = 45-m;
}
else
{
remain = 60-m;
}
remain=start + remain*60*1000// convert it to milisecond and plus it to current time;
编辑
然后,您可以使用下面的代码来设置第一个警报管理器:
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, FirstReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.set(AlarmManager.RTC_WAKEUP,remain, pi);
所以现在在您的FirstReceiver类中执行以下操作:
public class FirstReceiver extends BroadcastReceiver
{
//do what ever you want + code bellow to setup second alarm manager
Intent intent = new Intent(this, SecAlarm.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager am= (AlarmManager)getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime(),
15*60*60,pendingIntent);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句