让我们假设,将一对带有相应回调的文件描述符添加到循环器中,然后调用 ALooper_pollAll(),超时时间为 1000 毫秒。不久之后,一些文件描述符变得可用,并且 looper 开始对它们调用回调。假设上次调用的回调恰好在 ALooper_pollAll 开始后200 毫秒后完成。现在,如果任何一个描述符上都没有更多数据,函数什么时候会返回 ALOOPER_POLL_TIMEOUT?是在 800 毫秒(回调完成后的剩余超时时间)之后,还是在 1000 毫秒(初始超时)之后?
问问题
622 次
1 回答
1
在查看了Looper 的资料后,很明显是前者。内部ALooper_pollAll在循环中调用ALooper_pollOnce,在每次后续调用后更新(减少)超时时间,因此最终当它变为 0 时,返回ALOOPER_POLL_TIMEOUT。
于 2017-12-01T18:09:18.140 回答