logo头像

我有一个梦想

布局优化

[TOC] 绘画原理Android的绘制主要是借助cpu和gpu结合刷新机制共同完成的 cpu:负责执行measure、layout等方法,计算显示内容 gpu:负责栅格化(将UI元素绘制在屏幕上) 绘制过程使用skia库(2D)...

启动优化

app启动过程 点击图标启动 LauncherApp通知AMS进行启动,LauncherActivity onPause AMS新建app进程,创建ActivityThread,创建ApplicationThread 通过Applic...

注解原理

[TOC] 注解简析元注解:修饰注解的注解, @Target:注解的作用目标(修饰方法,类还是字段) @Retention:注解的生命周期 SOURCE:仅存在java源文件中,经过编译器后就丢弃,适用于一些检查行的操作,比如@Ov...

LiveData和ViewModel源码分析

[TOC] ViewModelViewModel的定义ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。 历史方式的缺点: 对于简单的数据,Ac...

Android大厂面试题

京1: butterknife原理,R2文件? Handler异步消息,同步屏障?同步消息?looper.perpare()何时创建?message.obtain()? Vsync,垂直同步信号? UI滑动渲染优化? 内存泄漏?le...

面试指南

[TOC] 框架篇EventBus简述EventBus的理解EventBus作为通信事件传递的总线,你无需控制值的传递,也无需通过广播等低效实现,通过EventBus在你需要发送的地方post信息,在你需要接收的地方接收信息处理即可,...

Butterknife源码解析

[TOC] 使用1234567891011121314@BindView(R.id.about_titleView)TitleView aboutTitleView;@BindView(R.id.view_about)LinearLa...

EventBus用法和源码解析

[TOC] 参照版本: EventBus 3.0以后 为什么选择EventBus 简化了 组件交流方式 对事件通信双方解耦 灵活指定线程(4种线程模式) 速度快,性能好 库比较小,不占内存 使用方便 使用指南 角色 Event:事件...

Android学习笔记

1. ViewStub的应用  在不显示布局时我们会使用 View.GONE 和 View.VISIBLE 属性去控制View的布局显示,但是在该使用过程中,该View的对象还是会被建立(只要通过inflate就会...