Native层
监听某个设备
// aosp/system/core/libutils/include/utils/Looper.h
int addFd(int fd, int ident, int events, Looper_callbackFunc callback, void* data);
int addFd(int fd, int ident, int events, const sp<LooperCallback>& callback, void* data);
具体实现在 aosp/system/core/libutils/Looper.cpp的addFd函数中
这段代码主要做了如下几件事:
- 把要监测的文件描述符fd、事件标识events、回调函数指针callback、以及data封装成一个Request对象
- 调用epoll_ctl对文件描述符fd进行监测。
- 把Request对象添加到mRequests列表(KeyedVector<int, Request> mRequests)
消息处理逻辑(Looper.pollOnce),调用上面封装的callback的handleEvent函数进行处理