如何了解一个源码(或者第三方插件)的运行机制

  1. 首先得知道那个插件“如何运行”
    1. 因为不知道怎么运行,就根本不知道怎么“启动”,怎么“结束”
    2. 举个例子:android-Ultra-Pull-To-Refresh
      1. 要求必须要传入回调---ptrFrame.setPtrHandler(new PtrHandler() )
      2. 启动要执行“ptrFrame.autoRefresh();”
  2. 从“启动的代码”出发找你的“回调方法”(不过这个只是针对一些结构比较简单的插件)
    1. 找到就知道,
      1. 回调前会执行些什么,
      2. 功能触发条件
    2. 例子:
      1. AsyncTask
  3. 从“启动的代码”出发“类创建”再到 “你的处理方法”(对于一些结构类似“消息队列”)
    1. 例子:Handler的消息机制(或者线程间通信)
      1. 启动的代码

        childHandler.post(new Runnable() {    @Override    public void run() {
        
            }});
      2. 创建时
        Handler.Callback callback =  new Handler.Callback(){
        
            @Override    public boolean handleMessage(Message msg) {        return false;    }};
        
        Looper.prepare();Handler childHandler = new Handler(callback);Looper.loop();
      3. 你的处理方法,
        mCallback.handleMessage(msg);
        或者
        handleMessage(msg);
    2. 因为有looper一直在遍历内部的MessageQuese,
      1. 解决:
        1. 所以从“启动代码”去到某个位置就断开了。
        2. 不知名就去到处理方法
时间: 2024-12-25 13:03:51

如何了解一个源码(或者第三方插件)的运行机制的相关文章

源码深度解析SpringMvc请求运行机制(转)

源码深度解析SpringMvc请求运行机制 本文依赖的是springmvc4.0.5.RELEASE,通过源码深度解析了解springMvc的请求运行机制.通过源码我们可以知道从客户端发送一个URL请求给springMvc开始,到返回数据给客户端期间是怎么运转的. 1.用户请求处理过程: 1.用户发送请求时会先从DispathcherServler的doService方法开始,在该方法中会将ApplicationContext.localeResolver.themeResolver等对象添加到

源码深度解析SpringMvc请求运行机制

本文依赖的是springmvc4.0.5.RELEASE,通过源码深度解析了解springMvc的请求运行机制.通过源码我们可以知道从客户端发送一个URL请求给springMvc开始,到返回数据给客户端期间是怎么运转的. 1.用户请求处理过程: 1.用户发送请求时会先从DispathcherServler的doService方法开始,在该方法中会将ApplicationContext.localeResolver.themeResolver等对象添加到request中,紧接着就是调用doDisp

Linux下载安装一个源码包

下载一个安装包除了yum和rpm之外我们还可以下载源码包 编译并安装 首先下载所有的源码包一定要去官网,为了就是防止源码包被第三方编译 例如我们今天安装一个httpd的源码包,也就是经常说的apache 首先进入官网 apache.org 进入download,并选择一个下载源 找到httpd 点击下载任意一个(右击复制链接地址即可) 如果使用wget下载的时候发现如下情况,代表没有安装wget服务,安装一下即可! 再次下载 下载完成 然后为了统一管理和使用,建议大家养成一个好的习惯把下载的源码

linux卸载一个源码包安装的软件的流程

完全卸载memcached的方法(CentOS) 我的大内存vps(centos系统)曾经安装过memcached,想给论坛提速,实际上不但没有明显效果,反倒耗费内存,看着碍眼,于是想卸载,于是网上各种搜索+自己实践,搞出一个傻瓜方案来: 1.结束memcached进程# killall memcached 2.删除memcached目录及文件# rm -rf /usr/local/memcached# rm -f /etc/rc.d/init.d/memcached 3.关闭memcached

hbase源码系列(十三)缓存机制MemStore与Block Cache

这一章讲hbase的缓存机制,这里面涉及的内容也是比较多,呵呵,我理解中的缓存是保存在内存中的特定的便于检索的数据结构就是缓存. 之前在讲put的时候,put是被添加到Store里面,这个Store是个接口,实现是在HStore里面,MemStore其实是它底下的小子. 那它和Region Server.Region是什么关系? Region Server下面有若干个Region,每个Region下面有若干的列族,每个列族对应着一个HStore. HStore里面有三个很重要的类,在这章的内容都

转:[gevent源码分析] 深度分析gevent运行流程

[gevent源码分析] 深度分析gevent运行流程 http://blog.csdn.net/yueguanghaidao/article/details/24281751 一直对gevent运行流程比较模糊,最近看源码略有所得,不敢独享,故分享之. gevent是一个高性能网络库,底层是libevent,1.0版本之后是libev,核心是greenlet.gevent和eventlet是亲近,唯一不同的是eventlet是自己实现的事件驱动,而gevent是使用libev.两者都有广泛的应

Spark源码分析之八:Task运行(二)

在<Spark源码分析之七:Task运行(一)>一文中,我们详细叙述了Task运行的整体流程,最终Task被传输到Executor上,启动一个对应的TaskRunner线程,并且在线程池中被调度执行.继而,我们对TaskRunner的run()方法进行了详细的分析,总结出了其内Task执行的三个主要步骤: Step1:Task及其运行时需要的辅助对象构造,主要包括: 1.当前线程设置上下文类加载器: 2.获取序列化器ser: 3.更新任务状态TaskState: 4.计算垃圾回收时间: 5.反

老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1

老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBridge的过程中会调用其start方法,而该方法会做2个主要的事情: 715行startAdb:开启AndroidDebugBridge 722-723行:初始化android设备监控并启动DeviceMonitor设备监控线程. 其中第一点我们上一小节已经做了详尽分析了,那么我们往下就去分析下第2点. Dev

《python源码剖析》笔记 python多线程机制

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.GIL与线程调度 Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用 为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL. GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下

【iScroll源码学习03】iScroll事件机制与滚动条的实现

[iScroll源码学习03]iScroll事件机制与滚动条的实现 前言 想不到又到周末了,周末的时间要抓紧学习才行,前几天我们学习了iScroll几点基础知识: 1. [iScroll源码学习02]分解iScroll三个核心事件点 2. [iScroll源码学习01]准备阶段 3. [iScroll源码学习00]模拟iScroll 今天我们来学习其事件机制以及滚动条的实现,完了后我们iScroll就学习的差不多了,最后会抽离iScroll的精华部分组成一个阉割版iScroll 并总结下iScr