可以多次触发一个AlarmManager(不仅是1:00或4:00或10:00),我的意思是,如果我有1个AlarmManager并且我可以每1:00执行一次AlarmManager,4: 00,10:00?还是有其他建议吗?
如果是,你可以用代码解释吗?
这是我的代码,这只是每隔12:00才执行
public static void InitLoggingService(Context context) {
boolean bolLoggingServiceState = UtilitiesPreferences.GetLoggingServiceState(context);
Intent _Intent = new Intent(context, ServiceMain.class);
Intent SaveFileIntent = new Intent(context, ServiceLogger.class);
PendingIntent SaveFilePending = PendingIntent.getService(context, 0, SaveFileIntent, 0);
AlarmManager _AlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar _Calendar = Calendar.getInstance();
_Calendar.set(Calendar.HOUR_OF_DAY, 12);
if (bolLoggingServiceState == true){
context.startService(_Intent);
_AlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, _Calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, SaveFilePending);
}else{
context.stopService(_Intent);
InitStarterService(context);
_AlarmManager.cancel(SaveFilePending);
}
}
答案 0 :(得分:2)
是的,这是非常可能的。似乎我不需要告诉你关于编写服务和接收器的问题,我从上面的代码猜测你已经完成了它。我会告诉你实现你想要的逻辑。
您需要做的更改很少是在每次触发时调用alarmmanager
,即取消之前的警报并启动新警报。换句话说,将警报配置为仅执行一次。所以每次您的服务被召唤开始新的警报
在mobile上创建一个本地数据库。保存你想要执行警报的时间间隔,如1,4,10。同样在同一个表中放置一个字段,通知你上次执行的间隔。然后,每当你进行一次新的报警调用时,从db读取间隔并相应地执行。