У меня есть фоновая служба Android, которая продолжает вызываться

#android #firebase #android-service

#Android #firebase #android-сервис

Вопрос:

У меня есть фоновая служба, которую нужно вызывать каждый день в 1 час дня. В 13 часов дня 3 значения в моей базе данных Firebase должны быть установлены в 0. Когда пользователь запускает определенное действие, запускается фоновая служба. Значения сбрасываются на 0 в 1 час дня, как я хочу, но каждый раз после 1 часа дня, когда действие запускается пользователем, служба запускает сброс моих значений. Как я могу сбросить значения до 0 в 1 час дня, а не снова до 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));
}
  

Комментарии:

1. Проверьте AlarmManager: developer.android.com/reference/android/app/AlarmManager

Ответ №1:

вы можете использовать диспетчер работ для планирования задачи.
здесь вы можете найти руководство по началу работы……