Android GDR ALooper_pollOnce() 对比 ALooper_pollAll()
Android NDK ALooper_pollOnce() vs ALooper_pollAll()
在AndroidNDK中,ALooper_pollOnce()
和ALooper_pollAll()
有什么区别?
这些简单的指定从 Looper 的事件队列中处理多少(最大)回调。顾名思义,pollAll()
执行事件队列中的所有回调,直到遇到数据事件、错误或超时。另一方面,一旦执行第一个回调,pollOnce()
returns ALOOPER_POLL_CALLBACK。
基本上,它们的关系可以用下面的伪代码表示:
int ALooper_pollAll(int timeoutMillis, int* outFd, int* outEvents, void** outData) {
int result;
do {
result = ALooper_pollOnce(timeoutMillis, outFd, outEvents, outData);
} while (result == ALOOPER_POLL_CALLBACK);
return result;
}
在AndroidNDK中,ALooper_pollOnce()
和ALooper_pollAll()
有什么区别?
这些简单的指定从 Looper 的事件队列中处理多少(最大)回调。顾名思义,pollAll()
执行事件队列中的所有回调,直到遇到数据事件、错误或超时。另一方面,一旦执行第一个回调,pollOnce()
returns ALOOPER_POLL_CALLBACK。
基本上,它们的关系可以用下面的伪代码表示:
int ALooper_pollAll(int timeoutMillis, int* outFd, int* outEvents, void** outData) {
int result;
do {
result = ALooper_pollOnce(timeoutMillis, outFd, outEvents, outData);
} while (result == ALOOPER_POLL_CALLBACK);
return result;
}