C1☆ Blog

Thinking will not overcome fear but action will.

Android广播机制

framework

Android广播机制 广播机制对于我们Android开发者来说并不陌生,最近笔者听身边的小伙伴讲了一下EventBus的实现原理,发现原来EventBus的内部是基于反射实现的,所以对于Android原生的广播机制充满了兴趣,本文笔者将记录笔者学习广播机制的学习过程 上一篇Android中的Context也讲述了Android中四大组件的关系,所以本文将以ContextWrapper的...

startService启动过程

framework

startService启动过程 ActivityManagerService ActivityManagerService是Android的Java framework的服务框架最重要的服务之一。对于Andorid的Activity、Service、Broadcast、ContentProvider四大组件的管理,包含其生命周期都是通过ActivityManagerService来完成...

Android数字签名机制

签名机制

Android数字签名机制 数字签名有什么用? 在日常生活中,我们都有过签名表身份的经历,比如:在签署一些协议或者合同的时候,往往需要潇洒的挥上自己的名字,甚至按一下指纹,这都是为了确定行为人的身份,而数字签名是签名的一个分支:基于密码学的签名方式,被数字签名广泛采用的RSA算法就是一种加密算法 数字签名怎么用呢? 在网络发送信息时,存在安全问题,因为在发送者和接收者之间可能存在第三...

Android中的Context

framework

Context 前言 说到Context,它其实是我们熟悉又陌生的小伙伴了,一开始我们都感知不到Context的存在,而是被迫使用Context的,比如自定义View构造函数就要传入Context,发送广播的时候,又必须使用Context,于是乎,我们通常会设计一个成员mContext来保存外部传入的Context,但是这样有造成一些问题: 好不容易想实现控件的代码解耦,为什么要...

Android包管理机制

framework

Android包管理机制 包其实就是一种文件格式,如apk包,jar包。Android中存在着很多包,所有的应用程序都是apk包,很多构成Android运行环境的都是jar包,还有一些以so为后缀的库文件,由于包的种类和数量繁多,就需要进行包管理,而包管理机制中的核心类就是PMS 包的数据结构 Android中的apk和Jjar包都以静态文件的形式分布在不同的硬件分区,而包管理是在内存...

Android打包流程

framework

Android打包流程 打包资源文件,生成R.java文件 这个过程使用了android-sdk/platform-tools目录下aapt工具将资源文件打包,这个过程中项目中的AndroidManifest.xml文件和布局文件xml都会编译生成相应的R.java,同时还有编译生成成resources.arsc和uncompiled res文件(二进制文件 ...

Android窗口机制

framework

Android窗口机制 窗口结构 每一个Activity都包含一个Window对象,Window对象通常由PhoneWindow实现 PhoneWindow:将Decoriew设置为整个应用窗口的根View。是Window的实现类。它是Android中的最基本的窗口系统,每个Activity 均会创建一个PhoneWindow对象,是Activity和整个View系统交互的...

浅入虚拟机(二)

java虚拟机&&android虚拟机

java虚拟机&&android虚拟机 JVM基本结构 Java栈 栈占用的是操作系统内存,每个线程对应一个虚拟机栈,它是线程私有的,生命周期和线程一样,每个方法被执行时产生一个栈帧,栈帧用于存储局部变量表、动态链接、操作数和方法出口等信息,当方法被调用时,栈帧入栈,当方法调用结束时,栈帧出栈。 局部变量表中存储着方法相关的局部变量,包括各种基本数据类型及对...

浅入虚拟机(一)

class文件&dex文件

class文件&dex文件 class文件结构与解析 文件结构 一种8位字节的二进制流文件 各个数据按顺序紧密排序,无间隙 这样做的好处就是可以减少class文件的体积,提高JVM加载class文件效率 每个类或接口都单独占据一个class文件 这样就可以做到每个类或接口都可以独立管理自身的内容,无需相...

动态代理

jdk源码

动态代理 Retrofit2关键源码 public <T> T create(final Class<T> service) { Utils.validateServiceInterface(service); if (validateEagerly) { eagerlyValidateMethods(service); } ...