源码剖析
文章平均质量分 88
青春路上的小蜜蜂
世界上最美妙的声音--键盘的敲击声!
展开
-
Android系统启动流程
当手机处于关机状态时,长按Power键开机,引导芯片从固化在ROM里的预设代码开始执行,然后加载引导程序到RAM,然后再去执行BootLoader。BootLoader主要是引导操作系统的启动进入到Kernel层,然后启动Kernel的swapper进程(pid=0),该进程又称Idle进程,Idle进程作为系统启动的第一个进程,用于初始化进程管理、内存管理、加载Display ,Camera Driver,Binder Driver等操作。然后Idle进程又会创建两个进程:Kernel空间创建kt原创 2023-06-28 10:50:16 · 377 阅读 · 0 评论 -
App启动流程分析(二)
上篇写到App启动流程中,Launcher进程中点击LauncherActivity的图标启动发送startActivity的请求给SystemServer进程,SystemServer进程中ActivityTaskManagerService又通过socket进程通信方式,发送创建App进程的请求给Zygote进程,这篇接着上篇主要论述Zygote进程fork出App进程的后续流程。Zygote进程fork出App。原创 2023-06-27 20:30:07 · 207 阅读 · 0 评论 -
App启动流程分析(一)
(注意:因为App进程与system_server进程通信是通过Binder实现的,Binder会开辟Binder线程池,那么此时这个方法的调用是在子线程中完成的,像bindApplicaiton最终需要调用Applicaiton的onCreate方法,但是这个方法是在主线程中,因此需要Handler完成线程切换):在上述第5步的system_server进程在收到请求后,除了通过Binder IPC 向App进程发送bindApplication外,还会发送scheduleTransaction.原创 2023-06-27 17:16:41 · 943 阅读 · 0 评论 -
Android中关于Binder机制的一些感悟
前言最近重温了Binder机制,在此把看到的一些心得,写一写。正文在这里需要先说明的一点是Client端和Server端以及后面提到的ServiceManager都处于用户空间、Binder驱动处于内核空间。Binder是进程间通讯的一种方式。进程间的通讯方式有很多,比如Socket、管道。而Socket、管道这些需要数据的两次拷贝(Client把数据从自己的进程空间拷贝到内核空间,然后再从内核空间拷贝到Server端的进程空间,这样Server就能客户端传递的数据,这个过程经历过了两次数据原创 2020-06-12 18:39:11 · 389 阅读 · 0 评论 -
子线程一定不能更新UI么?为什么?
前言平时我们在开发过程中知道主线程不能进行耗时操作,子线程不能更新UI,于是有了线程间通讯,有了Handler机制,那么子线程真的不能更新UI么?很多小伙伴在面试的时候也会经常被问到这个问题,网上已经有了不少详解这一问题的博客,不过这里我还是带着复习一遍的态度,把这个流程再摸一遍。正文子线程一定不能更新UI么?先说答案:是不一定,在Activity的onResume声明周期之前就可以。下面我们看一下原理:我们都知道在Android中有一个ActivityThread类,这个类非常重要原创 2020-06-11 17:04:18 · 1788 阅读 · 1 评论 -
Android中关于Activity的setContentView方法的剖析
前言最近看了Android中,Activity->ViewGroup->View的事件分发机制,于是顺带就看了下setContentView方法的源码。在这里和大家分享一下我的个人所得。正文public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(...原创 2020-04-20 11:33:26 · 334 阅读 · 0 评论 -
Activity中setContentView是怎么样把布局加载到Activity上的?
前言关于Activity的setContentView()方法相信大家都熟悉,一般放到Activity的onCreate()回调方法中使用,但是setContentView()方法,是怎么把布局渲染到Activity上的呢?下面我们就带着这个问题,一起来剖析下setContentView的源码。剖析Activity中的setContentView:public void setC...原创 2020-03-03 18:39:03 · 310 阅读 · 0 评论 -
Android事件分发剖析
前言Android的事件分发机制在面试中是经常被问到的一个知识点,最近在看源码的过程中,看到了这一点,这里咱们就把Android的事件分发对照源码进行一下简单的剖析。一、Activity的事件分发说到事件分发不得不说一下Touch事件,Touch事件一共有四种事件类型,包括:MotionEvent.ACTION_DOWN、MotionEvent.ACTION_UP、MotionEven...原创 2020-03-03 14:43:14 · 286 阅读 · 0 评论 -
ButterKnife10.2.1源码剖析
前言ButterKnife是经常用到一款开源框架,平时只是拿来用,但是具体ButterKnife的原理是什么?它是怎样实现BindView的,下面就让我们一起来看一看ButterKnife的源码,一起来剖析一下。ButterKnife的引入(1)在app下的build.gradle中引入android { ... // Butterknife requires Java ...原创 2020-02-29 13:50:51 · 508 阅读 · 0 评论