在Android NDK下,有沒有睡眠()函數睡眠X毫秒,但不阻止事件循環?Android NDK有睡眠()函數嗎?
我們正在編寫API測試以適用於Mac,Windows和Android。到目前爲止,我們已經爲Mac和Windows實現了某種睡眠(),但我們都是Android NDK的新手,需要一些幫助。先謝謝你。
在Android NDK下,有沒有睡眠()函數睡眠X毫秒,但不阻止事件循環?Android NDK有睡眠()函數嗎?
我們正在編寫API測試以適用於Mac,Windows和Android。到目前爲止,我們已經爲Mac和Windows實現了某種睡眠(),但我們都是Android NDK的新手,需要一些幫助。先謝謝你。
所以,你正在尋找一個sleep()
方法確實睡了一定的時間,但不會阻止事件循環?這聽起來很奇怪。我想你可能想用一個新的線程來調用sleep()方法 - 而不必使用任何JNI。
您可以使用[Handler.postDelayed] [1]計劃Runnable在設定的時間後運行,事件循環將在此期間繼續運行。
[1]:http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable,長)
正常的linux睡眠函數(usleep等)會阻塞調用它們的線程。這取決於你是哪個線程 - 希望不是UI。
更多的Android風格的方法是設置一個事件發生在未來的時間,然後從當前事件返回。當新事件發生時,您需要採取下一步。以一個狀態機爲例,每個狀態都作爲一個事件輸入,有效地執行一些事情,爲將來的時間安排下一個狀態,然後返回。
談到@mreichelt commment到一個答案:
是有一個sleep(seconds)
功能。
1.增加#include <unistd.h>
sleep(seconds)
或usleep(microseconds)
注:一微秒(我們或希臘字母畝加s)爲百萬分之一(10 -6)秒,而一毫秒(毫秒或毫秒)是千分之一秒
是 它是在unistd.h中定義的但是要小心,睡眠函數沒有標準化,所以在windows中定義sleep ` 上linux`
int sleep(unsigned int seconds);
int usleep(useconds_t useconds);
usleep窗口
sleep(int millisenconds);
需要微秒,其中睡眠需要幾秒鐘。 1秒= 1 * 1000 * 1000
+1,基於調度定時事件可能是真正問題的正確答案 – 2010-11-29 22:17:41
這是用Java編寫的Android應用程序的正確方法。但是Hai想知道如何在C++程序中入睡,而不會阻塞只能使用多線程才能完成的程序。 – mreichelt 2010-11-30 10:19:41