diff --git a/blogs/Android/Framework/Interview/技巧心得相关/Looper 的副业.md b/blogs/Android/Framework/Interview/技巧心得相关/Looper 的副业.md new file mode 100644 index 0000000..fc5fbdd --- /dev/null +++ b/blogs/Android/Framework/Interview/技巧心得相关/Looper 的副业.md @@ -0,0 +1,26 @@ +--- +Looper 的副业 +--- + +```c++ +int addFd(int fd, int ident, int events, sp& callback, ...){ + epoll_ctl(mEpollFd, EPOLL_CTL_ADD, fd, &eventItem); +} +void NativeMessageQueue::setFileDescriptorEvents(int fd, int events){ + mLooper->addFd(fd, Looper::POLL_CALLBACK, looperEvents, this, reinterpret_cast(events)); +} +void addOnFileDescriptorEventListener(FileDescriptor fd, int events, OnFileDescriptorEventListener listener){...} +``` + +Framework 里面有哪些地方用到了副业? + +```c++ +status_t NativeDisplayEventReceiver::initialize(){ + mMessageQueue->getLooper()->addFd(mReceiver.getFd(), 0, EVENT_INPUT, this, NULL); +} +``` + +#### 总结 + +1. Looper 里可以监听其他描述符 +2. 创建管道,跨进程传数据,用 Looper 监听描述符事件 \ No newline at end of file