自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 Activity布局加载流程源码分析(III)

在Activity布局加载流程源码分析(I)、Activity布局加载流程源码分析(II)、DecorView绘制流程源码分析与View绘制三大流程源码分析等四篇文章中,已经很详细分析了Acitivity的布局加载过程及布局内容的绘制过程。但在Activity布局加载流程源码分析(I) 中,对于setContentView(“资源文件”)怎么转化View的,没有细说,本篇博文主要想分析这部分内容(...

2019-06-27 19:23:50 259

原创 Android屏幕适配原理解析

最近在玩Android看到一篇文章一种极低成本的Android屏幕适配方式。细细阅读发现,其适配原理主要是根据dp/sp与px的转换,而dp/sp与px的转换又与DisplayMetrics的density相关,所以可以通过改变DisplayMetrics的density,scaledDensity和densityDpi的值来适配不同分辨率机型。这其中是怎么做到的呢,本篇博文将会从源码的角度来分析...

2018-06-19 19:59:56 3047 4

原创 Android框架源码阅读指南(博客专栏)

第一步:应用程序入口Android应用程序入口源码解析第二步:Android跨进程通信Binder通信机制原理解析Android跨进程通信方式(IPC)解析第三步:Activity的启动流程Activity启动流程源码分析(应用中)Activity启动流程源码分析(Launcher中)第四步:Activity的布局加载流程 Activity布局加载流程源码分析(...

2018-03-26 19:54:11 589 1

原创 Android显示原理源码分析

在博文DecorView绘制流程源码分析中,我们对Android的显示原理简单的说了一下,但没有深入。在博文中我们只知道Choreographer(舞蹈指挥者)只是post了一个操作,但后面到底怎么执行的?按啥逻辑执行的?我们都不清楚,作为一个喜欢刨根问底的程序员,是必须要分析分析的。在开始分析之前,我们需要了解一些概念,如:ViewRootImpl:是View的绘制的辅助类,所有Vie...

2018-03-05 20:43:41 1857

原创 Android Event事件分发机制源码分析

昨天我们对View绘制三大流程源码已做了深入分析,所以关于View的绘制流程,我相信大家也有了一个大致的了解(如果不了解,请回看博文)。然而对于View,还有一个知识点,也是极其重要的,那就是View的事件分发机制(也即Android事件分发机制)。所以,今天我们就来谈谈View的事件分发机制,从源码的角度,跟随Touch事件流,走一遍流程。在开始分析之前,我们需要了解一些概念,如一次Touc

2018-01-09 19:07:46 615 1

原创 View绘制三大流程源码分析

在上篇博文DecorView绘制流程源码分析中,关于DecorView作为Activity、Window中的顶级View的绘制,我们已经作了一个详细的分析。但在具体说到View的绘制的时候,我们没有详细说明,所以本篇博文将会对View的绘制原理作深度分析。在开始分析之前,我们需要了解一些概念,如:View:是所有UI组件的基类,是Android平台中用户界面体现的基础单位。ViewGr

2018-01-08 19:38:55 797

原创 DecorView绘制流程源码分析

通过Activiyt布局加载流程源码分析(I)和Activiyt布局加载流程源码分析(II)两篇博文,我们知道,首先,Activity的布局内容被加载进入装饰器DecorView中,然后WindowManager将DecorView添加到PhoneWindow中,也即Window中,最后ViewRootImpl对DecorView进行绘制操作,将其内容显示到手机上。但前两篇博文中,对于DecorV

2018-01-05 17:19:55 1537

原创 Activity布局加载流程源码分析(II)

在Activity布局加载流程源码分析(I)文章中,已经详细分析了setContentView()加载流程,但对于装饰器DecorView怎么被加载到Window上的,怎么被绘制到Window上的,上篇博文没有说到,所以本篇博文将会接着上篇博文,继续分析Activity布局的加载流程。在开始分析之前,我们需要了解一些概念,如:Window: 是一个抽象类,表示是一个窗口。Android系统中的界面

2018-01-03 18:51:59 1007

原创 Activity布局加载流程源码分析(I)

最近阅读Android源码,似乎有点发现新大陆的感觉。以前经常接触Android知识,在阅读源码中,开始变得豁然开朗。前两天才写完两篇博文Activity启动流程源码分析(应用中)和Activity启动流程源码分析(Launcher中),今天,就急不可耐的想写写Activity布局加载流程,其实,也就是想趁热打铁,好好梳理梳理这部分知识。在开始梳理之前,我们需要了解一些概念,如:Window: 是

2017-12-29 19:19:01 1061

原创 Activity启动流程源码分析(Launcher中)

Activity的启动方式,严格来说有两种形式。第一种是在Android应用中启动,第二种是从Launcher中点击应用快捷图标启动。Android应用中Activity启动流程,在上篇博文Activity启动流程源码分析(应用中)已介绍过了,想了解的同学,可以看看一下。本篇博文将会介绍从Launcher中启动Activity具体流程。在开始介绍之前,我们需要了解一些概念,如:ActivityTh

2017-12-27 18:37:58 956

原创 Activity启动流程源码分析(应用中)

在移动应用开发中,Android四大组件之一Activity是最常用的。很多界面,如:闪屏、主界面、次功能界面等都需要Activity来作为主要的载体;界面与界面之间,即不同的Activity之间也都存在跳转切换,弄懂这其中跳转切换原理,将有助于我们更好的理解Android中Activity之间的交互逻辑,从而更好的开发Android应用。本篇博文将会重点介绍Android应用中的Activity的

2017-12-26 20:14:33 1278

原创 Android跨进程通信方式(IPC)解析

在Android的圈子里,一直有一个声音,那就是:要学会看Android源码。在前期,android开发者比较缺乏阶段,似乎大家也没那么重视,但随着时间的发展,Android开发者早已供大于求,需要具备的技能也不在仅限于应用开发,还需要对Android运行机制原理有一个深度的了解,从而更好的为项目服务。所以,阅读Android源码,也就成为Android开发人员必须要做的事。在阅读Androi...

2017-12-15 18:02:29 1137

原创 Binder通信机制原理解析

Binder是什么?Binder有啥用?作为一个应用开发者,如果我们开发的应用不涉及跨进程通信(IPC),我想我们也不会去接触Binder。但不知你有没有发现,近来的Andorid面试,都会问及Android跨进程通信方面的知识,这又是为什么呢?如果你喜欢看Android源码,你就会发现Binder无处不在,Android系统中很多服务都是通过Binder来进行跨进程通信,了解Binder,弄懂Bi

2017-12-14 20:40:17 2030

原创 Logger框架源码解析

在移动软件开发中,我们经常会用到很多框架,如网络框架retrofit,图片加载框架glide,数据库框架litepal,日志框架Logger等。这些框架对应用都很重要,日志框架也是其中重要的一部分。因为很多操作如调试,优化,修改bug等都需要通过日志来验证我们的想法,所以日志框架就成项目的必需。本篇博文将会介绍Logger日志框架,主要从源码的角度分析。一、什么是Logger框架?Simple, p

2017-11-30 17:15:28 1191 1

原创 Android应用程序入口源码解析

我们在写C、C++或java应用时,都会有一个main函数,但Android的main函数在哪里呢?偶记得从第一个HelloWorld应用开始,就知道,只要在AndroidManifest配置表中对Activity的intent-filter进行配置,action为android.intent.action.MAIN,category为android.intent.category.LAUNCHE...

2017-11-23 21:40:33 1839

原创 Android消息机制源码解析(Handler)

Android消息机制,其实也就是Handler机制,主要用于UI线程和子线程之间交互。众所周知,一般情况下,出于安全的考虑,所有与UI控件的操作都要放在主线程及UI线程,而一些耗时操作应当放在子线程中。当在子线程中完成耗时操作并要对UI控件进行操作时,就要用Handler来控制。另外,Android系统框架内,Activity生命周期的通知等功能也是通过消息机制来实现的。本篇博文主要是想通过Han

2017-11-21 15:29:58 1739 1

原创 Butter Knife框架源码解析

最初的开始,findViewById()获取View控件,setOnClickListener设置View的监听事件,然后UI界面开始有响应。当初完成这个操作,有点兴奋,而这也成为我Android开发的起点。随着时间的推移,android也越来越熟悉,findViewById和setOnClickListener不知写了多少遍,偶发现有好大一部分时间,就是在写findViewById获取变量。针对这

2017-11-17 17:55:16 570

原创 LeakCanary框架源码解析

如果我们开发的程序,出现内存泄漏,导致程序奔溃,造成用户卸载APP。这样的结果,是我们不想见到的。作为一名向上的程序员,如何避免内存泄漏,这就成为必须要解决的问题。良心企业Square,开源了LeakCanary框架,可以轻松集成,让检测内存泄漏变得十分容易。什么是内存泄漏? 内存泄漏是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系...

2017-11-16 18:11:25 997

原创 Android悬浮窗原理解析(Window)[源码]

悬浮窗,在大多数应用中还是很少见的,目前我们接触到的悬浮窗,差不多都是一些系统级的应用软件,例如:360安全卫士,腾讯手机管家等;在某些服务行业如金融,餐饮等,也会在应用中添加悬浮窗,例如:美团的偷红包,博闻金融快捷联系等。但两种悬浮窗还是有区别的:系统悬浮窗:所有界面都会展示,包括主屏、锁屏应用悬浮窗:只在应用Activity中展示。一、窗口Window在了解悬浮窗之前,首先我们需要认识一下

2017-10-17 19:47:59 6261

原创 HTTP文件断点续传原理解析(源码)

生活中,有许多事物,在没有被揭开面纱之前,我们往往会觉得很神秘很高深,认为它一定很难,进而望而却步,失去了解它的机会。然而,很多事,只要我们自己能沉下心来,细细研究,那些神秘高深的,也会变得简单明了。”HTTP文件断点续传”就是这样一个好例子,深入了解背后之理,“HTTP文件断点续传原理”其实很简单。一、什么是断点续传1.定义:可以从下载或上传断开点继续开始传输,就叫断点续传。2.核心实现原理:i.

2017-09-08 20:20:04 7037 2

原创 Annontation注解的应用及介绍

一、什么是注解?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成

2017-08-22 11:41:00 886 1

原创 Android Camera相机原理解析(源码)

在应用软件开发中,图片数据,对于一个公司来说是十分重要的,例如:上传图片资料,修改用户头像等,而这其中就离不开相机和相册的使用。对于ios平台来说,直接调用系统相机或相册,就可搞定一切。然而对于Android平台来说,直接调用系统相机或相册,在适配和体验上问题比较多,具体原因,相比大家也知道,安卓品牌太多太杂,性能不一。鉴于此,在开发的过程中,遇到类似问题,建议自己实现相机或相册功能,以保证体验完整

2017-08-22 11:02:21 5983 3

转载 Android性能优化之启动加速35%

随着项目版本的迭代,App 的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关。下面小编就从应用的启动优化开始,根据实际案例,打造闪电般的 App 启动速度。一、前言。

2022-09-11 18:17:59 762

转载 Android adb &Linux文件操作指令

Android adb &Linux文件操作指令1.创建文件夹命令:mkdir 文件夹名 例:mkdir demo功能说明:建立目录语  法:mkdir [-p][--help][--version][-m <目录属性>][目录名称]补充说明:mkdir可建立目录并同时设置目录的权限。参  数:-m<目录属性>或–mode<目录属性> 建立目录时同时设置目录的权限。-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层

2021-07-01 16:01:07 731

原创 内存泄漏-思维导图总结

内存泄漏

2021-03-23 16:56:16 286

原创 Android应用性能指标

1.布局复杂度描述:布局复杂会导致布局需要更长的时间,从而导致进入应用慢、页面切换慢;工具:hierarchyviewer2.耗电量描述:耗电量大会导致机器发热、缩短机器的有效使用时长;工具:Android开发者模式中的电量统计;3.内存描述:内存消耗大会导致频繁GC,GC时会暂停其它工作,导致页面卡顿;内存泄露会导致剩余可用内存越来越小;内存不足会导致应用异常;工具:Android Studio—Memory/CPU/GPU,DDMS—MAT,Leakcanay4.网络:

2021-03-23 16:37:41 648

原创 ADB&LINUX常用查询指令

一、查询指令1.cat /proc/meminfo 查系统可执行内存2.cat /proc/cpuinfo // 查看CPU信息2.ps | grep com 查系统具体进程3.adb logcat //显示全部日志4.adb shell dumpsys meminfo <package_name>查看应用的内存使用情况5.adb shell dumps...

2020-01-20 11:12:48 887 1

原创 【基础知识点】Synchronized、volatile与ThreadLocal区别及使用场景

1.SynchronizedSynchronized关键字保证了数据读写一致和可见性等问题,但是他是一种阻塞的线程控制方法,在关键字使用期间,所有其他线程不能使用此变量。(同步机制采用了“以时间换空间”的方式)修饰一个类class ClassName { public void method() { synchronized(ClassName.class) { ...

2019-03-29 18:28:09 1717

原创 移动APP常用第三方SDK总结

前段时间,在一个技术群里,一位小伙伴分享了这张图,常用的第三方SDK功能,感觉很赞有木有!!!

2018-06-25 10:54:45 6057 4

转载 在Android应用中使用Https自定义证书,CER转BKS

转换方法参考:http://blog.csdn.net/raptor/article/details/18898937 转换方法参考:http://blog.csdn.net/lmj623565791/article/details/48129405首先要下载特定版本的JCE Provider包 http://www.bouncycastle.org/download/bcprov-j...

2018-04-13 15:27:52 1231

原创 你本是一个肉体,是什么驱使你前行【4】

文/丹尼尔生活最大的危险,就是空虚的心灵。罗曼 • 罗兰说:「生活最沉重的负担不是工作,而是无聊。」每个人要对自己的生活负责。一个人至少拥有一个梦想,才能让自己有动力和激情去坚持。生活的理想,就是为了理想的生活。追求不同的生活方式,是对人生做加法。追求更好的生活品质,则是对人生做减法。不知道你是在做人生加法,还是人生减法?年轻的时候,绝大部分人会有很多想法,什么都想要,什么都想尝试。人...

2018-03-30 11:47:39 485

原创 你本是一个肉体,是什么驱使你前行【3】

《大学》大学之道,在明明德,在亲民,在止於至善。 知止而后有定;定而后能静;静而后能安;安而后能虑;虑而后能得。物有本末;事有终始。知所先后,则近道矣。古之欲明明德於天下者,先治其国;欲治其国者先齐其家;欲齐其家者先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者;先致其知;致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国...

2018-03-30 11:45:45 495

原创 你本是一个肉体,是什么驱使你前行【2】

从出生到五岁,你童年无忌, 尽情玩耍,想哭就哭,想笑就笑。五岁到十二岁,你在小学, 开始谨记:好好学习,天天向上。十二岁到十五岁,你在初中, 尽情游戏,忘乎天地,但也没忘,好好学习,上高中。十五岁到十九岁,你在高中, 远离游戏,废寝忘食,决战高考,梦想大学。十九岁到二十三岁,你在大学, 努力学习,奋战自习室,为了未来,为了工作。二十三岁到现在,你毕业,工作。 我...

2018-03-30 11:43:43 372

原创 你本是一个肉体,是什么驱使你前行【1】

你本是一个肉体,是什么驱使你前行。你生来是一个肉体, 三四岁时你有了意识,但还没有自己,不知道自己。十四,十五岁,你开始反叛,开始认识到自己,开始追求自己。长大了,成年了,你开始寻找自己,问自己: 我是谁?我从哪里来?我要去那里?在路上,没有谁给过你答案。书本,电影,旅行见闻。当你们相遇时,你会去思考,会去寻求答案。有那么一段时间,你认为你找到了。可当夜深人静,...

2018-03-30 11:41:33 409

原创 人生的意义

如果你问我,人生有啥意义? 我会说:人生毫无意义,所谓的人生意义需要自己去下定义,自己去寻找属于自己的人生意义。人一生很短暂,平均也就八十多个春夏秋冬,也就三万多个小时; 这一生,你想要怎样过活,必须由你自己来决定。父母,亲人,他们也都不是你自己; 他们的话,始终也只是建议,重点在于你。你可以采纳吸收,也可以弃之不用。我们每一个人,都是独一无二的,也都可以独立活出自己想要...

2018-03-30 11:36:51 1141

原创 Android布局优化——include、merge和ViewStub标签

1.include标签标签描述: 可以允许在一个布局当中引入另外一个布局,实现布局的复用,精简布局代码。例子:Activity常用top栏代码实例: 引入布局:titlebar.xml&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://s...

2018-03-29 18:48:15 630 1

原创 Bitmap四种色彩存储模式ARGB_8888、ARGB_4444、 RGB_565、 ALPHA_8

一、基础知识:ARGB:指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue。自然界中所有的可见色都是由红、绿、蓝组成的,所以红、绿、蓝又称为三原色,每个原色都存储着所表示颜色的信息值A-&gt;alpha(透明度),R-&gt;red(红色),G-&gt;green(绿色),B-&gt;blue(蓝色)二、四种模式的区别:四种类型为bitm...

2018-03-29 15:40:26 6697

转载 什么是位、字节、字、KB、MB?

位:“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。字节:8个二进制位构成1个”字节(Byte)”,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。字:“字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位...

2018-03-29 15:25:02 733

转载 常用排序算法

一、冒泡排序1.算法介绍:冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!2....

2018-03-27 11:43:01 238

原创 设计模式-六大原则

当初作为小白,提到设计模式,就会觉得很高大上,很牛叉。其实,在我们身边,在我们的项目中,设计模式的身影无处不在。然而,什么是设计模式呢?百度解释为:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 经验总是值得学习的,特别是对我们编程有极大帮助的设计模式经验。在Java中常见的设计模式有23种,而这23种设计模式都遵循了设计模式的六大原则,这......

2017-12-13 16:20:39 576

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除