在Android NDK下,是否有睡眠()函数睡眠X毫秒,但不阻止事件循环?
我们正在编写API测试,以便在Mac,Windows和Android上运行。到目前为止,我们已经为Mac和Windows实现了某种类型的sleep(),但我们都是Android NDK的新手,需要一些帮助。提前谢谢。
答案 0 :(得分:11)
所以你正在寻找一个sleep()
方法,它会在一段时间内休眠,但不会阻止事件循环?这听起来很奇怪。我想你可能想要使用一个新线程并在那里调用sleep()方法 - 而不必使用任何JNI。
答案 1 :(得分:7)
将@mreichelt提交转变为答案:
是的,有一个sleep(seconds)
功能。
1.add #include <unistd.h>
sleep(seconds)
或usleep(microseconds)
注意:微秒(我们或希腊字母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,长)