Android NDK是否有sleep()函数?

时间:2010-11-29 21:23:34

标签: c++ android android-ndk

在Android NDK下,是否有睡眠()函数睡眠X毫秒,但不阻止事件循环?

我们正在编写API测试,以便在Mac,Windows和Android上运行。到目前为止,我们已经为Mac和Windows实现了某种类型的sleep(),但我们都是Android NDK的新手,需要一些帮助。提前谢谢。

5 个答案:

答案 0 :(得分:11)

所以你正在寻找一个sleep()方法,它会在一段时间内休眠,但不会阻止事件循环?这听起来很奇怪。我想你可能想要使用一个新线程并在那里调用sleep()方法 - 而不必使用任何JNI。

答案 1 :(得分:7)

将@mreichelt提交转变为答案:

是的,有一个sleep(seconds)功能。

1.add #include <unistd.h>

  1. 致电:sleep(seconds)usleep(microseconds)
  2. 注意:微秒(我们或希腊字母mu加s)是百万分之一(10 -6)秒,而毫秒(毫秒或毫秒)是千分之一秒

答案 2 :(得分:2)

正常的linux睡眠函数(usleep等)将阻塞调用它们的线程。这取决于你的哪个线程 - 希望不是UI的线程。

更具Android风格的方法是将事件设置为将来发生,然后从当前事件返回。当新事件触发时,您将执行下一步。例如,想一个状态机,每个状态都作为事件输入,有效地立即执行某些操作,为将来的时间安排下一个状态,然后返回。

答案 3 :(得分:1)

YES 它是在unistd.h中定义的。但要小心睡眠功能是不规范的,所以在Windows睡眠中定义 ` 在Windows上

sleep(int millisenconds);

on linux`

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

usleep需要微秒,睡眠需要几秒钟。 1秒= 1 * 1000 * 1000

答案 4 :(得分:0)

您可以使用[Handler.postDelayed] [1]安排Runnable在设定的时间后运行,事件循环将在此期间继续工作。

[1]:http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable,长)