如何每15分钟运行一次Android功能,特别是每天15分钟?

XXX*_*XXX 8 java android alarmmanager

这可能是一个重复的问题,但我仍然面临着这方面的问题,希望有一个解决方案.提前致谢.

如何将警报管理器设置为运行,以便每隔15分钟时钟间隔执行一次该功能,例如每天8:00,8:15,8:30,8:45,9:00,无论何时何时应用程序已启动.

举一个例子,如果我说我在7:47开始我的应用程序主要活动,我希望闹钟在8:00开始,然后是8:15,8:30等等......我该怎么办?如果有任何建议我真的很感激..

pou*_*yan 1

您应该设置两个警报管理器。对于第一个警报管理器,通过计算适当时间的剩余时间(例如上午 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;
Run Code Online (Sandbox Code Playgroud)

编辑

之后,您可以使用下面的代码来设置第一个警报管理器:

 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);
Run Code Online (Sandbox Code Playgroud)

所以现在在您的 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);
}
Run Code Online (Sandbox Code Playgroud)