多触发AlarmManager?

时间:2014-08-19 06:20:28

标签: android alarmmanager

可以多次触发一个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);
    }
}

1 个答案:

答案 0 :(得分:2)

是的,这是非常可能的。似乎我不需要告诉你关于编写服务和接收器的问题,我从上面的代码猜测你已经完成了它。我会告诉你实现你想要的逻辑。

您需要做的更改很少是在每次触发时调用alarmmanager,即取消之前的警报并启动新警报。换句话说,将警报配置为仅执行一次。所以每次您的服务被召唤开始新的警报

在mobile上创建一个本地数据库。保存你想要执行警报的时间间隔,如1,4,10。同样在同一个表中放置一个字段,通知你上次执行的间隔。然后,每当你进行一次新的报警调用时,从db读取间隔并相应地执行。