Подтвердить что ты не робот

Есть функция sleep() для Android NDK?

В Android NDK есть функция sleep(), которая спит для X miliseconds, но не блокирует цикл событий?

Мы пишем тесты API для работы на Mac, Windows и Android. До сих пор мы реализовали какой-то сон() для Mac и Windows, но мы все новичок в Android NDK и нуждаемся в некоторой помощи там. Заранее благодарю вас.

4b9b3361

Ответ 1

Итак, вы ищете метод sleep(), который сходит на определенное количество времени, но не блокирует цикл событий? Это звучит странно для меня. Я думаю, вы могли бы использовать новый поток вместо этого и вызвать метод sleep() там - без использования какого-либо JNI.

Ответ 2

Включение @mreichelt в ответ:

Да, есть функция sleep(seconds).

1.add #include <unistd.h>

  1. Вызов: sleep(seconds) или usleep(microseconds)

Примечание: микросекунда (наша или греческая буква mu plus s) равна миллионной (10-6) секунды, а миллисекунда (мс или мсек) - одна тысячная секунды

Ответ 3

Обычные функции ожидания linux (usleep и т.д.) блокируют поток, который их вызывает. Это зависит от вас, какой поток, который, надеюсь, не является пользовательским интерфейсом.

Еще один подход к андроидному подходу состоял в том, чтобы настроить событие, которое произойдет в будущем, а затем вернуться из текущего события. Когда новое событие срабатывает, вы делаете следующий шаг. Подумайте, например, о машине состояния с каждым состоянием, которое вводится как событие, делая что-то эффективно мгновенно, планируя следующее состояние в будущем, а затем возвращаясь.

Ответ 4

ДА он определен в unistd.h. Но будьте осторожны, функция сна не стандартизирована, поэтому на окнах сна, который определен в ` на окнах

sleep(int millisenconds);

на linux`

int sleep(unsigned int seconds);
int usleep(useconds_t useconds);

usleep занимает микросекунды, где сон занимает секунды. 1 секунда = 1 * 1000 * 1000