每晚7点安排一项任务

时间:2015-04-14 04:51:08

标签: android alarmmanager android-alarms

您好我想每天晚上7点向服务器发送一些数据。为此我在我的活动中调用了这个函数。

    private void startTimer() {
    Intent alarmIntent = new Intent(getApplicationContext(), LocTimer.class);
    pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);

    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    int interval = 1000*60*60*24;
    c = Calendar.getInstance();

    c.setTimeInMillis(System.currentTimeMillis());
    c.set(Calendar.HOUR_OF_DAY, 19);
    c.set(Calendar.MINUTE, 00);
    manager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), interval, pendingIntent);

    }

在LocTimer类接收方法中,我将数据发送到服务器。 但是在第一次加载活动时,startTimer会将数据发送到服务器。之后每24小时就会发送一次数据。我正在尝试在加载活动时第一次停止发送数据,并仅在晚上7点发送数据。

2 个答案:

答案 0 :(得分:0)

您可以通过更改上述方法中的代码,将时间Alaram Manager设置为只调用一次而不是重复次数

:此:

 manager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), interval, pendingIntent);

<强>向

manager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);

答案 1 :(得分:0)

我建议在这里改变方法。

创建一个foreground service,该问题在问题中提到的上述活动开始时启动(必须只执行一次)。

此前台服务应包含alrammanager,它会触发未决意图和/或按计划(晚上7点)将数据发送到服务器。

希望这有帮助!