Aloper_addFd数据参数



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

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

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

有关于这方面的详细文件吗?谢谢你的建议!

它是一个指向任意数据的指针,如果您在应用程序中需要,可以对其进行设置。

除了作为回调的参数发送外,当您调用ALooper_pollAllALooper_pollOnce时,data指针还将写入outData参数引用的内存。

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

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);
    }
}

相关内容

  • 没有找到相关文章

最新更新