Android(安卓)Looper(cpp)用法举例
16lz
2021-01-25
在使用loop 前,我是直接使用 epoll 的,后来发现 loop 封装了 epoll, 使用起来还要更方便一点。
static int event_handle(int fd, int events, void* data){printf("==== handle === \n"); return 1;}int mMsgFds[2];int main(void){ if ( socketpair( AF_LOCAL, SOCK_STREAM, 0, mMsgFds) < 0 ) { ALOGE("could not create thread control socket pair: %s", strerror(errno)); } sp<Looper> looper; looper = new Looper(true); looper->addFd(mMsgFds[1], 0, ALOOPER_EVENT_INPUT, event_handle, NULL); while(1) looper->pollOnce(1000); looper.clear();}===== start a new thread to write message as below ==== char msg=0; int ret; write(mMsgFd,&msg,1);
注意:event_handle 如果返回 0, looper就不再 watch 此 fd 了。 要持续 watch 就返回 1
其他参考:
http://blog.csdn.net/fuyajun01/article/details/38052601
http://wangkuiwu.github.io/2014/08/26/MessageQueue/
更多相关文章
- Android(安卓)Gallery组件详解
- GLES2.0 on Android(安卓)emulator
- Could not load 'clearsilver-jni' java.library.path = out/hos
- 【Android开发bug】Dropping event due to no window focus
- Android.mk:21: *** 遗漏分隔符
- Android(安卓)4.2 原生系统有哪些方法实现全屏下隐藏导航栏?
- android4.0 禁止横竖屏切换使用
- android 如何调用WPS显示工作文件
- Android在Context详细解释 ---- 你不知道Context