理解 WindowManagerService 发表于 2019-04-15 相关概念Window是一个抽象类,唯一的实现类是 PhoneWindow 分类: 父 Window 子 Window,不能单独存在,需要依附在父 window 上,例如 dialog 系统 Window,例如 toast PhoneWindow在 Activity attach 时构造了 ... 阅读全文 »
HandlerThread、IntentService 理解 发表于 2019-04-02 HandlerThreadHandlerThread 继承 Thread,HandlerThread 本质上就是一个普通 Thread,只不过内部建立了 Looper,因此拥有自己的消息队列。不适合频繁处理耗时操作,因为消息是串行处理的,某个人任务执行时间过长,会导致后续的任务被延迟处理 通过调用 ... 阅读全文 »
Java 内存模型 发表于 2019-03-28 Java 内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来建立的。 经典问题: 20 个线程,每个线程都对同一个 int 做自增操作 100 次,最后的结果 i 一定小余 2000。 Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的 ... 阅读全文 »
浅析 Binder 机制 发表于 2019-03-15 几个概念 进程隔离 进程隔离,不同进程之间,不共享内存。而操作系统是多进程的,因此需要 IPC。 进程空间划分 Kernel 是操作系统的核心,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。因此把 Kernel 和上层的应用程序隔离,分为内核空间和用户空间。 Android ... 阅读全文 »
Android 焦点分发机制梳理 发表于 2019-03-13 ViewRootImpl连接 DecorView, Window DecorView -> Activity -> PhoneWindow -> DecorView 的来回绕一圈。 既然触摸事件已经到了 Activity.dispatchTouchEvent() 中了,为什么不直 ... 阅读全文 »
Android 启动模式 发表于 2019-03-13 相关的概念 ActivityStack 应用程序在一个单例的 ActivityStack 中,一个 ActivityStack 可能包含了多个 task TaskRecord 一个进程(程序)有一个默认的task affinity,默认为包名 Activity 会进入启动它的 Activit ... 阅读全文 »
Java 类加载机制 发表于 2019-03-02 类的生命周期 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化 加载这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的入口。 验证确保 Class 文件的字节流中包含的信息是否符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。 ... 阅读全文 »
从字节码层面理解泛型 发表于 2019-02-12 命令行12345//编译成 class 文件javac Test.java //反汇编 class 文件javap -V Test.class Android Studio 编译的 class文件位于 build/intermediates/clases/debug/包名 下 IDEA 插件 jcl ... 阅读全文 »
《C++ 程序设计》读书笔记 发表于 2018-12-16 本文联合编辑:小辣辣。向她致以最崇高的敬(爱)意 ❤ 第一章 C++的初步认识在程序进行编译时,先对所有的预处理命令进行处理,将头文件的具体内容代替 #include 指令,然后再对该程序单元进行整体编译。 对函数做声明,它的作用是通知 C++ 编译系统。 第二章 数据的存储、表示形式和基本运 ... 阅读全文 »
APK 的前世今生:从 Android 源码到 apk 的编译打包流程 发表于 2018-11-18 最近想要研究热修复的原理,并自己实现一套简单的热修复框架(音视频的坑刚挖好就又挖另一个坑了2333),已经在看书入门 c++,方便后续查看业内一些知名热修复框架的源码,另外在涉及编译期/运行时修改代码之前,先了解一下 apk 是如何从项目源码被打包生成的,可能对后续的从思路上或实际操作都会所裨益。 ... 阅读全文 »