Handler消息处理机制
2015-10-25 17:07
701 查看
public void dispatchMessage(Message msg) { if (msg.callback != null) { //通过post(Runable r)发送消息,会把Runable 封装成 Message,最后调用handlerCallback来处理消息 handleCallback(msg); } else { if (mCallback != null) { //通过Handler(Callback callback)的创建Handler,会调用接口类Callback的成员函数handlerMessage来处理消息 if (mCallback.handleMessage(msg)) { return; } } //一般情况下是调用Handler类的子类中重写父类的成员函数handlerMessage handleMessage(msg); } } //native层有和java层对应的Looper Looper::Looper(bool allowNonCallbacks) : mAllowNonCallbacks(allowNonCallbacks), mSendingMessage(false), mResponseIndex(0), mNextMessageUptime(LLONG_MAX) { //消息循环的本质其实是创建管道,然后往管道里面写消息和读消息 int result = pipe(wakeFds); //使用epoll机制对管道的写操作进行监听,其实就是监听有无消息传来需要处理 result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, mWakeReadPipeFd, & eventItem); }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories