Alooper_addFd 数据参数

Alooper_addFd data parameter

我不确定这个功能是如何工作的。这是原型:

int ALooper_addFd(ALooper*looper, int fd, int ident, int events, ALooper_callbackFunc callback, void *data);

这个'data'指针是什么?如果回调不为 NULL,'data' 应该是传递给回调的自定义数据。但是,如果回调为 NULL,'data' 参数用于什么?或者它也必须为 NULL,在那种情况下?

有这方面的详细文档吗?谢谢指教!

它是一个指向任意数据的指针,您可以在应用程序中根据需要设置它。

除了作为回调的参数发送外,当您调用 ALooper_pollAllALooper_pollOnce.

您可以查看 Android Native App Glue 作为示例。在这种情况下,data 指向由胶水定义的 android_poll_source 结构,并且要使胶水将循环程序的文件描述符中的命令转换为输入和 APP_CMD 事件,您必须调用process 中的 (android_poll_source *)data 函数,当您从循环程序接收到事件时:

int ident, events;
struct android_poll_source *source; // source is the data here
while ((ident = ALooper_pollAll(0, NULL, &events, (void **)(&source))) >= 0) {
    if (source) {
        source->process(source->app, source);
    }
}