C1☆ Blog

Thinking will not overcome fear but action will.

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); } ...

CAS

并发技术

CAS 我们都知道线程安全的实现有两种方法: 互斥同步 非阻塞同步 一般,互斥同步在编程上采用synchronized关键字来进行同步。但是由于互斥同步在多线程并发的情况下存在线程阻塞、唤醒以及用户态和内核态之间的切换所引起的性能问题。 从处理方式上来说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施(例如:加锁),那就肯定...

GreenDao

数据库框架

GreenDao 简述 当我们编写好了Entity类之后,会自动生成DaoMaster、DaoSession、Entity Dao这三个核心类。 //生成数据库文件,名为students-db DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "xxx.db", null); SQLiteDatabase d...

Mutidex

framework

Mutidex 分包 apk --AndroidManifest.xml --R // 资源文件 --resource.arsc // 资源索引 --assets // 不进行编译加工的原生文件 --lib // apk的so库 --META-INT...

ActivityThread

framework

ActivityThread ActivityThread代表一个应用进程的主线程(对于应用进程来说,ActivityThread的main函数确实是由该进程的主线程执行),其职责就是调度及执行在该线程中运行的四大组件 关键的方法 1、main()与systemMain() 这个两个方法都是ActivityThread的入口,所执行的主要供作就是实例化一个Activity示例并构建一个An...

多进程编程

IPC

关于Android应用多进程 android:process 应用实现多进程需要依赖于android:process这个属性 适用元素:Application, Activity, BroadcastReceiver, Service, ContentProvider。 通常情况下,这个属性的值应该是”:“开头。表示这个进程是应用私有...