工作笔记之
鸡毛飞上天
学无止境,任重道远
展开
-
WMS工作原理分析
Wms管理着所有的窗口,包括创建、删除和修改,以及将某个窗口设置为焦点窗口。一、窗口、Window和View的区别窗口由两部分构成,一部分是描述该窗口的类WindowState,另一部分是该窗口在屏幕上对应的界面Surface。window是一个类,其实现类是PhoneWindow类,Activity类实现Window.Callback接口,从而成了具有通用操作方式的窗口。View也是一个视图,是...原创 2018-02-24 15:35:18 · 3241 阅读 · 1 评论 -
APP启动流程
首先看张android手机系统图 从按电源键到导航界面,android初始化的组件:Loader层: Boot Rom:电源按下,引导芯片代码从固化Rom层开始执行,加载执行到RAM层, Boot Loader:这是进入android系统前的引导程序,主要检测外部RAM、网络,内存、硬件参数等。Kernel层: android系统的内核层,到在这里才刚进入android系统,启...原创 2017-06-26 23:52:56 · 628 阅读 · 0 评论 -
Android程序包管理机制解析和PMS启动流程分析
程序包管理包含三个部分内容:提供一个能够根据intent匹配到具体的Activity、Provider、Service。即当应用程序调用startActivity(intent)时,能够把参数中指定的intent转换成一个具体的包含了程序包名称及具体Componment名称的信息,以便Java类加载器加载具体的Componment。进行权限检查。即当应用程序调用某个需要一定权限的函数时,系统判断调...原创 2018-02-24 14:31:55 · 7310 阅读 · 0 评论 -
Android屏幕适配图片那些事
昨天晚上无意将本是在drawable-xhdpi里面的图片直接放在drawable中,后显示出来的图片被放大好几倍,今天早上网上搜索找到了答案,现特此记录下android市场上的手机尺寸有大有小,分辨率各有不同,怎么去适配这上千种屏幕类型呢,androidStudio采用新建不同分辨率的文件夹放置对应的图片,在适配时,虚拟机会根据运行手机的手机分辨率密度查找对应的文件夹的图片,从而解决问题,在st...原创 2018-02-24 14:22:42 · 318 阅读 · 0 评论 -
Git关联远程服务器
1.生成SSH公私钥首先下载到git官网下载git客户端,下载完成后,要生成SSH key,即公钥和私钥,SSH属于一种加密算法,网络端的公钥必须与本地的私钥配对成功后才能提交代码。在Linux和Mac中是默认安装了SSH,Windows可以在git bash输入ssh,如生成以下提示,则表示安装成功,在git bash输入ssh-keygen -t rsa ,指定rsa算法生成秘钥,连续三个回车...原创 2018-02-24 14:18:54 · 446 阅读 · 0 评论 -
EventBus3.0源码解析
EventBus是用于数据传输的开源第三方库,可以深度的解耦合,代码的间接性也更好,目前最新版本是EventBus3.0,我们分析的是这个版本,首先看下这个库的使用,以在Activity为例:public class MainActivity{ }原创 2017-12-06 16:40:34 · 207 阅读 · 0 评论 -
RxJava的使用解析(一)
RxJava越来越受到开发者的青睐,主要是因为他方便的线程切换以及简洁的流式调用,可以使用RxJava的操作符组合使用完成很多复杂的逻辑。让你用了之后,完全离不开它。本文跳过RxJava的使用,分析内部的调用源码,让你知其然,知其所以然。下面的源码解析是基于RxJava1.x.x版本的,后续会推出RxJava2的介绍文章。流程分析RxJava采用的是发布-订阅的观察者模式,它是怎么订阅的呢?Obs原创 2017-12-14 15:17:59 · 254 阅读 · 0 评论 -
android系统启动流程
android系统启动流程1、开机开始给系统供电,此时硬件电路会产生一个复位时序,包括磁盘、内存、CPU和其他硬件全部要准备就绪,复位完成后,CPU开始执行第一条指令。该指令指向引导程序(Bootloader),其作用是装载真正的应用程序。2、执行操作系统内核初始化各种硬件,包括内存、网络接口、显示器、输入设备,建立各种内部数据结构,内核初始化完毕后开始运行具体的应用程序。3、运行Android程原创 2017-11-25 14:28:22 · 469 阅读 · 0 评论 -
理解Android Binder架构
Binder是一种架构,包括三个模块:服务端接口、Binder驱动、客户端接口。Binder驱动:客户端和服务端共享一份物理内存,用户进程和内核进程在需要的时候建立内存映射,用完后马上释放映射,这样可以充分高效的使用系统的物理内存。当服务端创建好Binder对象后,对应会在Binder驱动中创建一个Binder类的mRemote对象,客户端请求服务端时要使用到这个mRemote对象。原创 2017-11-15 15:22:29 · 284 阅读 · 0 评论 -
JAVA动态代理模式源码解析
动态代理:代理类在运行时生成,即java在编译完之后并没有实际的class文件,而是在运行时生成类字节码,并加载到JVM中。实现动态代理的步骤:1、定义一个公共接口,一个目标类,目标类实现公共接口。2、自己定义一个类,即调用处理器类,实现InvocationHandler接口,代理类调用任何方法都会经过这个调用处理类3、生成代理对象原创 2017-11-16 14:30:18 · 545 阅读 · 1 评论 -
Retrofit2源码分析
先来一张retrofit2 的流程图: 1.基本用例:创建Retrofit对象原创 2017-11-17 15:10:43 · 321 阅读 · 0 评论 -
使用AndroidStudio将工具库打成jar包和aar包
将工具库打成jar包要将工具库打成jar包,它必须是library,首先在project上new一个Module,指定为library,比如将其命名为testLib。然后让主app依赖这个库 然后在library的build.gradle中加入下面的代码: 将工具库打成aar包原创 2017-10-19 15:16:56 · 1034 阅读 · 0 评论 -
SugarRecord的使用和源码分析
SugarRecord的使用和源码分析SugarRecord是用来操作本地数据库的ORM框架,ORM(Object-Relational-Map)即对象映射模式,我们在操作数据库的时候,不需要和复杂的sql语句打交道,只需要调用对象的属性和方法来实现数据库的增删改查。下面来看sugarRecord的基本使用首先再gradle文件中添加依赖 compile 'com.github.satyan:原创 2017-09-15 18:07:02 · 2398 阅读 · 1 评论