如何每 15 分钟 运行 一个 android 函数,特别是每天的 15 分钟标记?
How to run an android function every 15 minutes , and specifically on the 15 minute mark everyday?
这可能是一个重复的问题,但我仍然面临这方面的问题,希望有解决方案。提前致谢。
如何将警报管理器设置为 运行 以便每隔 15 分钟时钟间隔执行一次功能,例如 8:00、8:15、8:30, 8:45, 9:00 每天 无论何时启动应用程序。
举个例子,假设我在 7:47 启动了我的应用程序主程序 activity,我希望闹钟从 8:00 开始,然后是 8:15 ], 8:30 等等....我该怎么办?如果有任何建议,我将不胜感激..
最好每隔一天设置一个闹钟
public void setAlarm(Context context) {
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, yourTimeInMilisecond, 24 * 60 * 60 * 1000, pi); // Millisec * Second * Minute
}
这里yourTimeInMillisecond
是你要设置闹钟的时间,比如如果你想设置明天早上9点的闹钟,那就是:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
long yourTimeInMilisecond = calendar.getTimeInMillis();
希望它对你有用:)
您应该设置两个警报 manager.for 第一个通过计算剩余时间到您适当的时间来设置触发时间(例如 8:00 上午)。然后你应该在你的第一个警报管理器中创建另一个警报管理器,它将每 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 class 中执行如下操作:
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);
}
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (time limits), pendingIntent);
这可能是一个重复的问题,但我仍然面临这方面的问题,希望有解决方案。提前致谢。
如何将警报管理器设置为 运行 以便每隔 15 分钟时钟间隔执行一次功能,例如 8:00、8:15、8:30, 8:45, 9:00 每天 无论何时启动应用程序。
举个例子,假设我在 7:47 启动了我的应用程序主程序 activity,我希望闹钟从 8:00 开始,然后是 8:15 ], 8:30 等等....我该怎么办?如果有任何建议,我将不胜感激..
最好每隔一天设置一个闹钟
public void setAlarm(Context context) {
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, yourTimeInMilisecond, 24 * 60 * 60 * 1000, pi); // Millisec * Second * Minute
}
这里yourTimeInMillisecond
是你要设置闹钟的时间,比如如果你想设置明天早上9点的闹钟,那就是:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
long yourTimeInMilisecond = calendar.getTimeInMillis();
希望它对你有用:)
您应该设置两个警报 manager.for 第一个通过计算剩余时间到您适当的时间来设置触发时间(例如 8:00 上午)。然后你应该在你的第一个警报管理器中创建另一个警报管理器,它将每 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 class 中执行如下操作:
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);
}
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (time limits), pendingIntent);