![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android系统源码
RikkaTheWorld
一个OTAKU
展开
-
源码分析View的事件分发
在基于 源码分析View的绘制流程上,通过Android8.0源码分析View的事件分发机制。当我们点击屏幕时,就已经产生了点击事件,这个事件被封装成了一个 MotionEvent类。而事件的分发,指的就是MotionEvent在View之间的传递和处理。1. View的事件分发机制当点击事件产生后,就会先产生最开始的传递链:Activity -> PhoneWindow -> DecorView -> ContentView.dispatchTouchEvent()而Conte原创 2020-05-13 18:56:39 · 204 阅读 · 1 评论 -
源码分析View的绘制流程
源码基于Android8.0在Android应用程序启动(根Activity)过程中,我们知道Activity启动流程的最后一步就是调用 ActivityThread.handleLaunchActivity()方法:// ActivityThread.java private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent, String reason) { ... Activ原创 2020-05-13 14:09:10 · 194 阅读 · 0 评论 -
关于ViewGroup$ViewLocationHolder$mRoot的内存泄漏
今儿遇到个场景:在Android P(API 28)中,在退出了含有RecyclerView的RelativeLayout中,LeakCanary报了这么一个内存泄漏:1. 定位问题1.1 定位源码在AndroidP中ViewGroup内部有这么一个静态内部类ViewLocationHolder:// ViewGroup.java /** * Pooled class ...原创 2020-05-07 15:37:20 · 1981 阅读 · 1 评论 -
Android 初识AIDL
AIDL是啥在Android中谷歌规定:两个进程之间不能直接通信,当我们需要在一个进程中想要得知另一个进程的数据,这个时候该怎么办呢? 谷歌定义了4种跨进程的通信方式,分别对应着android的四大组件每个组件一种方法,进程A将数据提交给系统,系统再接着将数据提交给进程B,这种间接的共享数据的方法在 Service这个组件里面 就叫 AIDL。 AIDL是Android interfac...原创 2018-06-28 11:08:52 · 215 阅读 · 0 评论 -
从AIDL来看Binder的通信原理(基于Andorid8.0)
首先感谢:使用AIDL来进行进程间通信解答了我很多疑惑前几天在学习一些Binder机制(较浅)后,我就在趁热打铁看看AIDL的一些东西,在学习的时候发现了几点疑问,并且网上鲜有解答:ServiceManager如果管理的是系统服务,那我们自定义的Service是谁来管理?基于问题1,那AIDL是如何通过 queryLocalInterface()来找到我们的自定义Service的?8...原创 2020-04-17 21:47:11 · 350 阅读 · 0 评论 -
写给Rikka自己的Handler源码说明书
1.Handler概述Handler是Android的一套消息传递机制。为什么要使用Handler呢?只有一点原因:子线程不能更新UI,所以子线程需要一种手段来通知UI线程数据已更新,这个手段就是Handler。1.1 Handler的组成它有四个非常重要的对象来完成这套机制:Handler负责消息的发送和处理MessageQueue消息队列,负责存放消息Message消息载...原创 2020-04-10 20:25:30 · 436 阅读 · 0 评论 -
热修复知识预备
本篇学习基于《Android进阶解密》第13章热修复原理。接下来的会把热修复、Hook、插件化的知识学习完。这章来学习热修复的三种基本方案。1.热修复的出现日常开发中,我们可能遇到下面的情况:线上版本出现了严重的bug,如果才刚刚发版,或者下个版本已经规定了具体的计划发布,这个时候为了解决bug,需要fix+测试+在各个应用市场重新发布,这会消耗大量的人力物力,代价比较大版本升级率不高,...原创 2020-04-03 17:13:09 · 490 阅读 · 0 评论 -
JNI原理学习
这几天来学习下JNI的知识,参考的文章有:《Android进阶解密》第九章JNI原理JAVA基础之理解JNI原理JNI是Java Native Interface的缩写,翻译是Java本地接口。它的作用是来桥接Java和其他语言(C/C++),完成交互工作。Android中的语言层可以分成Java层和Native层。为什么会有Native层呢?是因为在Java出现之前,很多的功能和系统都是由...原创 2020-03-18 10:10:12 · 643 阅读 · 0 评论 -
Service的startService和bindService源码流程
学习完Activity的启动流程后,接着学习Service的启动流程和绑定流程。1.Service的启动流程和Activity一样,Service的启动过程我们可以看成两个部分:ContextImpl到AMS的调用过程(从应用程序进程到SystemServer进程)ActivityThread启动Service (从SystemServer进程回到应用程序进程)1.1 Context...原创 2020-03-03 09:25:46 · 284 阅读 · 0 评论 -
Android应用程序启动(根Activity)过程
Activity的启动分为两种,一种是 根Activity的启动,另一种是 普通Activity的启动第一种是应用程序启动的第一个Activity。第二种是程序内从一个Activity打开另外一个Activity的过程的启动。一般情况下我们说的Activity的启动就是指第一种:根Activity的启动。...原创 2020-02-27 11:09:28 · 912 阅读 · 0 评论