您好我想每天晚上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点发送数据。
答案 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点)将数据发送到服务器。
希望这有帮助!