我有一个后台服务,每天下午1点打电话给我。下午1点,我的Firebase数据库中的3个值应设置为0。当用户启动某个活动时,将触发后台服务。值会像我想要的那样在下午1点重置为0,但是,每次下午1点之后,当用户启动活动时,该服务都会运行以重置我的值。如何才能将值在下午1点重置为0,然后在第二天下午1点之前重置为零?
下面是我在Service类中的代码
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
String id = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseDatabase.getInstance().getReference().child("Users").child(id).child("steps").setValue(0);
FirebaseDatabase.getInstance().getReference().child("Users").child(id).child("bonusScore").setValue(0);
FirebaseDatabase.getInstance().getReference().child("Users").child(id).child("stepsScore").setValue(0);
}
}, calendar.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS));
return START_STICKY;
}
@Override
public void onDestroy()
{
super.onDestroy();
}
这是启动服务的代码。此活动的oncreate方法中将调用此方法。
private void startBackgroundService()
{
startService(new Intent(this, BackgroundService.class));
}