如何了解一个源码(或者第三方插件)的运行机制
2016-06-22 18:29
190 查看
首先得知道那个插件“如何运行”
因为不知道怎么运行,就根本不知道怎么“启动”,怎么“结束”
举个例子:android-Ultra-Pull-To-Refresh
要求必须要传入回调---ptrFrame.setPtrHandler(new PtrHandler() )
启动要执行“ptrFrame.autoRefresh();”
从“启动的代码”出发找你的“回调方法”(不过这个只是针对一些结构比较简单的插件)
找到就知道,
回调前会执行些什么,
功能触发条件
例子:
AsyncTask
从“启动的代码”出发“类创建”再到 “你的处理方法”(对于一些结构类似“消息队列”)
例子:Handler的消息机制(或者线程间通信)
启动的代码
创建时
你的处理方法,
因为有looper一直在遍历内部的MessageQuese,
解决:
所以从“启动代码”去到某个位置就断开了。
不知名就去到处理方法
不定时持续更新
因为不知道怎么运行,就根本不知道怎么“启动”,怎么“结束”
举个例子:android-Ultra-Pull-To-Refresh
要求必须要传入回调---ptrFrame.setPtrHandler(new PtrHandler() )
启动要执行“ptrFrame.autoRefresh();”
从“启动的代码”出发找你的“回调方法”(不过这个只是针对一些结构比较简单的插件)
找到就知道,
回调前会执行些什么,
功能触发条件
例子:
AsyncTask
从“启动的代码”出发“类创建”再到 “你的处理方法”(对于一些结构类似“消息队列”)
例子:Handler的消息机制(或者线程间通信)
启动的代码
childHandler.post(new Runnable() { @Override public void run() { } });
创建时
Handler.Callback callback = new Handler.Callback(){ @Override public boolean handleMessage(Message msg) { return false; } }; Looper.prepare(); Handler childHandler = new Handler(callback); Looper.loop();
你的处理方法,
mCallback.handleMessage(msg); 或者
handleMessage(msg);
因为有looper一直在遍历内部的MessageQuese,
解决:
所以从“启动代码”去到某个位置就断开了。
不知名就去到处理方法
不定时持续更新
相关文章推荐
- 06:月度开销
- mysql主从复制
- 报错,未知错误1
- iOS开发:UIImageView常用操作
- Eclispe添加本地Struts2的DTD文件
- Git的使用
- 锁存器和自旋锁(Latch&Spinlock)----理解Latch和Spinlock
- ios -- NSNotification(通知)
- 使用GCDAsyncUdpSocket&GCDAsyncSocket进行TCP连接和UDP连接
- 框架模式MVC与MVP在Android中的应用
- 所谓的牛逼,都是用苦逼换来的
- 10-4-表插入排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- 【IOS开发】UIImageView的用法。。图片
- Activiti工作流之异常处理一
- Apache Flink流分区器剖析
- Ionic实战五:ionic图表源码基于highcharts
- Linux 管理FTP 服务
- fork()函数
- plsql 连接oracle数据库详细配置
- 《OD学算法》排序