首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android记忆

    Android源码解读-事件分发机制

    34B66A6E-F3C7-4D02-A508-14F271CD3445.png A6A6A7B1-1CC9-4820-9F87-D513CA85F93C.png 48C9C055-75B4-4B0B-9D82-8F8A699AA1C1.png 449E97DB-A71E-4E1E-8915-7E9A6BFFE07D.png D397C456-AD94-42DB-8123-74FB3CF44FAB.png

    58150编辑于 2022-01-04
  • 来自专栏Android记忆

    Android源码解读-Handler、Looper、MessageQueue

    二、源码解析 Looper源码解析 Android应用程序进程在启动的时候,会在线程中加载 /frameworks/base/core/java/android/app/ActivityThread.java next源码 Message next() { final long ptr = mPtr; ............... nativePollOnce(ptr, nextPollTimeoutMillis);【内部源码这里就先暂时不看了,有机会以后再看看】 当nextPollTimeoutMillis=-1时,表示没有消息 Looper大致就这些,下面看下Handler Handler源码解析 无限循环遍历MessageQueue过程就这些,上面讲了如何获取Message以及MessageQueue如何阻塞的。 dispatchMessage源码 public void dispatchMessage(@NonNull Message msg) { if (msg.callback !

    1.8K40编辑于 2023-03-29
  • 来自专栏Android记忆

    Android源码解读-App启动过程

    一.Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity;

    52711编辑于 2022-01-13
  • 来自专栏857-Bigdata

    源码解读】|SparkEnv源码解读

    metricsSystem, memoryManager, outputCommitCoordinator, conf) 总结 Spark Env 源码顺序大致就是上面的流程 ,更细致的后面的博文中会持续更新解读

    1.6K20编辑于 2022-05-17
  • 来自专栏857-Bigdata

    源码解读】| LiveListenerBus源码解读

    异步事件列队主要由LinkedBlockingQueue[SparkListenerEvent] 构建,默认大小为10000

    1.9K20编辑于 2022-07-07
  • 来自专栏857-Bigdata

    源码解读】|SparkContext源码解读

    (最短栈、最长栈) private[spark] case class CallSite(shortForm: String, longForm: String) 源码中通过「getCallSite( )」 方法配置返回CallSite 参数示意: 参数英文名 参数含义 lastSparkMethod 方法存入 firstUserFile 类名存入 firstUserLine 行号存入 源码如下:

    2.2K20编辑于 2022-05-17
  • 来自专栏Android记忆

    Android源码解读-View绘制流程之setContentView

    1.直接看下setContentVIew源码 activity.java public void setContentView(@LayoutRes int layoutResID) { getWindow ().setContentView(layoutResID);// initWindowDecorActionBar(); } 1.在activity.java源码中我们可以看到 mWindow = new PhoneWindow(this, window, activityConfigCallback);所以我们直接看PhoneWindow源码中的setContentView。

    81541编辑于 2022-01-11
  • 来自专栏Android技术分享

    Android View源码解读:浅谈DecorView与ViewRootImpl

    前言 对于Android开发者来说,View无疑是开发中经常接触的,包括它的事件分发机制、测量、布局、绘制流程等,如果要自定义一个View,那么应该对以上流程有所了解、研究。 以下源码均取自Android API 21。 Activity中,会在onCreate()方法中写下这样一句: setContentView(R.layout.main); 显然,这是为activity设置一个我们定义好的main.xml布局,我们跟踪一下源码 尝试追踪一下源码,发现mWindow是Window类型的,但是它是一个抽象类,setContentView也是抽象方法,所以我们要找到Window类的实现类才行。 mContentRoot = (ViewGroup) in; ViewGroup contentParent = (ViewGroup)findViewById(ID_ANDROID_CONTENT

    1K20发布于 2019-08-22
  • 来自专栏拭心的安卓进阶之路

    Android 进阶14:源码解读 Android 消息机制( Message MessageQueue Handler Looper)

    处理消息 整体的流程有了,但是一直没有结合源码捋一捋。 这才去翻了翻源码,今天总结一下。 Android 消息机制主要涉及 4 个类: Message MessageQueue Handler Looper 我们依次结合源码分析一下。 这篇文章暂不研究 Native 层源码。 这篇文章结合源码完整的看了一遍 Message MessageQueue Handler Looper,现在看着上面的图,可以自信地说我“熟悉 Android 消息机制”了哈哈。 结合 Android 性能优化:多线程 理解会更深一些!

    1.6K90发布于 2018-01-05
  • 来自专栏安卓随笔

    Android - NETD解读

    NETD 一、NETD解读 1.1、NETD的作用 Netd是Android系统中专门负责网络管理和控制的后台daemon程序,其功能主要分三大块: 设置防火墙(Firewall)、网络地址转换(NAT Android系统中DNS信息的缓存和管理。 Netd位于Framework层和Kernel层之间,它是Android系统中网络相关消息和命令转发及处理的中枢模块。 setenv("ANDROID_DNS_MODE", "local", 1); //创建DnsProxyListener,它将创建名为"dnsproxyd"的监听socket dpl = strcmp(argv[2],"enable")); return sendGenericOkFail(cli, res); } 二、iptable解读 2.1、iptable原理

    3.3K11编辑于 2022-12-13
  • 来自专栏jeremy的技术点滴

    harbor源码解读

    解读源码 主要代码位于$GOPATH/src/github.com/goharbor/harbor/src这个目录,这里将这几个目录逐个分析一下。 核心的入口代码里这里$GOPATH/src/github.com/goharbor/harbor/src/jobservice/runtime/bootstrap.go#LoadAndRun,这里大致解读一下这个方法的代码 源码目录大概就这些内容了,还是比较清晰的。

    3K10发布于 2019-03-13
  • 来自专栏全栈程序员必看

    hmily源码解读

    上述txTransactionHandler是StarterHmilyTransactionHandler,handler方法主要逻辑,构建根事务,绑定参与者,关联当前线程放入ThreadLocal,持久化事务日志,创建事务上下文,关联当前线程放入ThreadLocal。

    39820编辑于 2022-08-31
  • 来自专栏Java工程师成长之路

    springboot源码解读

    springboot源码从main函数开始 public static void main(String[] args) { ApplicationContext app = SpringApplication.run IllegalStateException(ex); } } 我把主要步骤的每一步都标明了注释,看起来这里很多都是springboot特有,但主要的实现还是对springMVC的继承,你去看springmvc的源码

    57420发布于 2019-09-10
  • 来自专栏一头猪的学习

    OpenFeign源码解读

    spm_id_from=333.1007.top_right_bar_window_history.content.click 2.深入理解Feign之源码解析-腾讯云开发者社区-腾讯云 (tencent.com metadata.isConcrete() || (metadata.isAbstract() && metadata.hasAnnotatedMethods(Lookup.class.getName())))); } } 源码解读 SynchronousMethodHandler.Factory -> SynchronousMethodHandler 总结: 设计:组件化思维 技术点:适配器模式,SpringBoot自动装配,父子容器 OpenFeign的源码实现过程如下

    1.1K80编辑于 2023-05-09
  • 来自专栏黯羽轻扬

    Redux源码解读

    最核心的两个东西是createStore和applyMiddleware,地位相当于core和plugin 二.设计理念 核心思路与Flux相同: (state, action) => state 在源码 丢进去执行了2遍,省了一个action case,此外还省了初始环境的标识变量和额外的store.init方法 充分利用了自身的dispatch机制,相当聪明的做法 四.applyMiddleware 这一部分源码被 重构可能会考虑要不要做break change,是否支持边界case,够不够易读(很多人关注这几行代码,相关issue/pr至少有几十个)等等,Redux维护团队比较谨慎,这块的迷惑性被质疑了非常多次才决定要重构 五.源码分析

    66540发布于 2019-06-12
  • 来自专栏大数据-数据人生

    TaskScheduler源码解读

    这里调用了taskScheduler接口,我们打开TaskScheduler trait,trait在scala里就是接口,在IDEA中查看实现的类,使用快捷键:ctrl+H,或者直接使用快捷键:ctrl + alt +B查看实现

    63831发布于 2020-05-04
  • ConcurrentHashMap 源码解读

    今天,我就带领大家一起阅读源码,看看它的存储结构和实现原理是怎么样的。 注:本片文章所涉及的源码版本来自 JDK1.8 Java 8 几乎完全重写了 ConcurrentHashMap,代码量从原来 Java 7 中的 1000 多行,变成了现在的 6000 多行 ConcurrentHashMap ConcurrentHashMap(); 默认会创建大小为 16 的空集合 当我们调用构造方法并手动设置集合大小时 ConcurrentHashMap map = new ConcurrentHashMap(12); 源码如下

    21010编辑于 2025-11-03
  • 来自专栏源码揭秘

    vuex源码解读

    源码阅读 核心功能在store.js,根据注释阅读便于理解。 总结 最后我们回过来看文章开始提出的5个问题。 引用 Vuex框架原理与源码分析 -美团 Examples Counter Counter with Hot Reload TodoMVC Flux Chat Shopping Cart Running

    70430编辑于 2022-02-14
  • 来自专栏java、Spring、技术分享

    AbstractQueuedSynchronizer源码解读

    AbstractQueuedSynchronizer关键属性 下面来看看acquire获取锁的部分源码: public abstract class AbstractQueuedSynchronizer 源码如下: abstract static class Sync extends AbstractQueuedSynchronizer { //非公平锁最终最调用到当前这个方法,传入的acquires 源码如下: //这个方法是不允许子类重写的 final boolean acquireQueued(final Node node, int arg) { boolean failed 下面再来看看释放锁的逻辑AbstractQueuedSynchronizer的relase源码如下: //释放锁需要调用release方法 public final boolean release

    70630发布于 2018-09-11
  • 来自专栏Android记忆

    Volley源码解读

    ============= 新增一个请求 queue.add(request); 新增一个请求 queue.add(request2); 新增一个请求 queue.add(request3); 二、源码讲解 我们来看下源码 public static RequestQueue newRequestQueue(Context context) { return newRequestQueue(context 看下源码,我们发现在cancelAll、finish方法中使用。 我们来看下processRequest源码 @VisibleForTesting void processRequest(Request<? 2.策略模式 当Android SDK小于9时,基于HttpClient创建HttpStack,否则基于HttpURLConnection创建HttpStack,还可以自定义Stack 3.模板方法模式

    93670编辑于 2022-01-25
领券