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


    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. 不知名就去到处理方法
    4. 不定时持续更新
  • 相关阅读:
    AngularJS(17)-Angular小程序
    AngularJS(16)-路由
    AngularJS(15)-依赖注入
    AngularJS(14)-动画
    AngularJS(13)-包含
    AngularJS(12)-BootStrap集成
    AngularJS(11)-API
    AngularJS(10)-数据验证
    Mysql 备份和恢复.sql文件,导入.csv文件
    Mysql group_concat()
  • 原文地址:https://www.cnblogs.com/shortboy/p/5608155.html
Copyright © 2020-2023  润新知