您的位置:首页 > 移动开发 > Android开发

Android Looper(cpp)用法举例

2015-08-10 18:41 531 查看
在使用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

其他参考:

/article/8026983.html

http://wangkuiwu.github.io/2014/08/26/MessageQueue/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: