Nano Hash - криптовалюты, майнинг, программирование

Как запустить метод, когда текущие секунды равны 00

Я работаю над методом в классе обслуживания в Android Studio. Я использовал Timer для повторного выполнения метода каждую минуту.. но в моем случае важны секунды.. когда onStartCommand обедал, например, в 13:40:22, метод forRoom1() мы выполним и подождем одну минуту, чтобы он был повторно выполнен в 13:41:22..

Я хочу, чтобы метод forRoom1() начал свое первое выполнение в 13:40:00, поэтому после ожидания одной минуты он будет повторно выполнен в 13:41:00.

вот мой код onStartCommand:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {


Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {

forRoom1();

}
}, 0, 60 * 1000);



return START_STICKY;
}

какое бы ни было текущее время, самое главное, чтобы начать первое выполнение в секунду 00, не могли бы вы помочь мне с этим?


Ответы:


1

На первом этапе мы должны знать секунды Текущего времени, затем выполнение смещается на :
(60 - factSecond)

Для этого мы используем эту строку:

int second = Calendar.getInstance (). get (Calendar.SECOND);

И здесь у нас есть секунды текущего времени, нам просто нужно знать, сколько секунд (в миллисекундах) осталось, чтобы достичь следующих 00s.

int delay = (60 - second) * 1000;

Теперь нам всем нужно приступить к нашей задаче, для этого мы воспользуемся этим методом:

public void scheduleAtFixedRate (java.util.TimerTask task,
                                 long delay,
                                 long period)

Параметры:

задача – задача, которую нужно запланировать.

delay — задержка в миллисекундах перед выполнением задачи.

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

и это полный код:

Timer timer = new Timer();

int second = Calendar.getInstance().get(Calendar.SECOND); // get the actual second 

System.out.println(second); // check the current second on this time 

int delay = (60 - second) * 1000; // this is the first delay to start the task

int period = 60000; // the period on millisSecond 

timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        //  start you task here
        // you can check the time by your self with the line below 
        Log.e(TAG, "run: " + Calendar.getInstance().get(Calendar.MINUTE) + ":" + Calendar.getInstance().get(Calendar.SECOND));
    }
}, delay, period);

Примечание: вы можете использовать метод timer.schedule(), проверьте этот ответ, чтобы узнать больше Информация

26.03.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..