Android源码分析
文章平均质量分 91
风罗伊曼
永远年轻,永远热泪盈眶
展开
-
AMS 、PMS服务探索
在上篇Zygote进程探索我们说到zygote进程fork出了SystemServer进程,SystemServer进程又开启了AMS、PMS等重要服务。原创 2022-06-26 23:23:58 · 839 阅读 · 0 评论 -
Zygote进程探索
说到Zygote进程,就不可避免的提到init进程原创 2022-06-08 22:35:13 · 657 阅读 · 3 评论 -
Handler源码分析(二)
一、前言上篇Handler源码分析说到为什么looper死循环不会导致主线程ANR,原因就在于Android系统是一个以事件作为驱动的系统,当没有事件时界面就应该处于静态状态,深层的原因就是Handler在调用message.next()时也调用了nativePollOnce()方法用于等待下一条消息到达。然后在添加消息到队列时,也会调用native static void nativeWake(long)唤醒线程继续处理消息。上述所说的阻塞和唤醒都发生在native代码中。native 会使用epol原创 2022-05-25 16:58:38 · 243 阅读 · 0 评论 -
OkHttp源码分析(二)
前面我们提到了OkHttp整体的流程,从真正的请求发出者RealCall去调用同步或者异步方法,完成网络请求。对整体流程不清楚的同学可以点击这个链接OkHttP源码分析(一)直达哦。通过前面的分析我们也知道,调用了同步或异步方法并不会立即去执行网络请求,而是会经过分发器的再一步处理,才会执行。接下来我们就去源码里看看吧。直接看同步方法的调用。override fun execute(): Response { check(executed.compareAndSet(false, true)原创 2021-08-02 13:32:43 · 118 阅读 · 0 评论 -
OkHttp源码分析(一)
OkHttp的简单使用众所周知,讲解一个框架的原理之前都需要知道这个框架如何使用的,都不知道怎么使用的话,直接去分析原理的话,就显得有点头重脚轻了。OkHttp很庞大,当然一篇文章是说不清楚的。哈哈哈哈哈,废话不多说啊,我们先看看简单的使用吧。val client = OkHttpClient.Builder() .connectTimeout(1000, TimeUnit.MILLISECONDS) .callTimeout(2000, TimeUnit原创 2021-07-25 17:11:16 · 299 阅读 · 2 评论 -
Handler 源码分析
一、Handle的简单使用废话不多说,先来看看Handler的简单使用。val mHandler = Handler(object : Callback() { fun handleMessage(msg: Message?): Boolean { //处理消息 return false }})以上是处理消息的过程,比如网络返回之后需要更新UI之类的操作可以在Handler的handleMessage回调中完成。mHandler.message =原创 2021-06-17 17:07:20 · 427 阅读 · 0 评论 -
Android 事件分发机制分析
Android 事件分发机制分析一、引子先来看一段代码。findViewById<TextView>(R.id.tvHellWorld).setOnClickListener { Log.d("TAG", "onCreate: 3333333")}很熟悉的一个点击事件,对吧,我们在对TextView点击之后,就会打印出日志。那大家有没有想过,我们的点击操作是怎么一层层到我们这个点击回调呢?这就是我们接下来要聊的东西了。搬好小板凳,一起来看看吧。二、缘起-事件说到这个,就原创 2021-06-29 16:10:52 · 241 阅读 · 1 评论