Android
文章平均质量分 93
大老G
坚持
展开
-
Android的Activity启动流程分析
-------------------------------------------------------------------------------------------------------------------------------------------------------------------...原创 2019-06-10 22:38:41 · 47967 阅读 · 25 评论 -
Android启动流程:上电到启动第一个APP的详细流程
1. 安卓启动大致如下图所示:2. BootLoader (如果想了解跟详细关于bootloader请看:安卓bootloader)从系统的角度上来讲,Android系统的启动过程可以分为 bootloader 引导,装载和启动 linux内核 启动Android系统bootloader 相当于电脑上的Bios 他的主要作用就是初始化基本的硬件设备,建立内存空间映射,...转载 2019-03-07 18:29:10 · 603 阅读 · 0 评论 -
Android应用安装过程及原理
Android应用安装的流程及路径: 应用安装涉及到如下几个目录:system/app 系统自带的应用程序,无法删除data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录data/data 存放应用程序的数据Data/dalvik-cache ...转载 2019-03-07 16:52:33 · 12757 阅读 · 1 评论 -
Android App 构建流程分析
我们平时在android studio中点击run ,就能把代码编译成一个apk文件并安装到手机上。那么这个过程中都具体发生了什么 ?我们是怎么把代码和资源文件打包成一个apk文件,并安装到手机上的呢 ? 今天就详细研究一下这个流程 。Apk构建基本流程build-simplified.png上图是Android官方提供的打包简略流程图。清晰地展示了一个Android Proj...转载 2019-03-07 16:47:31 · 535 阅读 · 2 评论 -
简单理解Binder机制的原理
一、概述Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案。当然也存在部分其他的IPC方式,如管道、SystemV、Socket等。那么Android为什么不使用这...转载 2019-03-07 16:38:40 · 266 阅读 · 0 评论 -
Binder讲解
面试的时候,面试官问你说,简单说一下Android的Binder机制,你会怎么回答?我想,我会这么说。在Android启动的时候,Zygote进程孵化出第一个子进程叫SystemServer,而在这个进程中,很多系统提供的服务,比如ActivityManagerSerivce, PowerManagerService等,都在此进程中的某一条线程上运行。而很多用户开发的应用程序,也就是我...转载 2019-03-07 16:34:02 · 658 阅读 · 0 评论 -
Android启动流程、app启动原理
从头分析整理学习底层知识。Android 众多基于Linux内核的系统类似, 启动系统时, bootloader启动内核和init进程. init进程分裂出更多名为"daemons(守护进程)"的底层的Linux进程, 诸如android debug deamon, USB deamon等. 这些守护进程处理底层硬件相关的接口.随后, init进...转载 2019-03-06 20:04:04 · 8605 阅读 · 1 评论 -
Binder机制 概念浅析
毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。理解Binder对于理解整个Android系统有着非常重要的作用,Android系统的四大组件,AMS,PMS等系统服务无一不与Binder挂钩;如果对Binder不甚了解,那么就很难了解这些系统机制,从...转载 2019-03-06 18:58:45 · 240 阅读 · 0 评论 -
Android启动一个app 流程
我们平时在手机桌面上点击一个app 图标, 就能启动一个app应用。从用户角度来看,这个过程看起来很简单,但是它的背后又隐藏着什么玄机 ? 在做安卓开发这么多年后,我觉得有必要认真的分析一下,启动一个app 都走了什么流程 。1. android app 进程基础理论1.1 每个Android App都在一个独立空间里, 意味着其运行在一个单独的进程中, 拥有自己的VM, 被系统分配一...转载 2019-03-07 18:31:03 · 644 阅读 · 0 评论 -
Android 应用进程启动流程
本文是 Android 系统学习系列文章中的第一章节第二小节内容,从源码出发说明了 Android 应用进程是如何启动的,经过哪些进程的通力合作,它们是如何是设计的。。对此系列感兴趣的同学,可以收藏这个链接 Android 系统学习,也可以使用 RSS 进行订阅。阅读的收益讨论的内容也就是一个应用进程是如何启动的,私以为这一部分的内容颇为重要,即便不了解细节,也要知道其中的大体步骤。特别是...转载 2019-03-07 18:33:31 · 2238 阅读 · 2 评论 -
OKHttp源码分析
OkHttp优点OkHttp是一个高效的Http客户端,有如下的特点: 支持HTTP2/SPDY黑科技 socket自动选择最好路线,并支持自动重连 拥有自动维护的socket连接池,减少握手次数 拥有队列线程池,轻松写并发 拥有Interceptors轻松处理请求与响应(比如透明GZIP压缩,LOGGING) 基于Headers的缓存策...原创 2019-06-13 17:14:29 · 426 阅读 · 0 评论 -
View事件传递机制
理解事件传递的基本逻辑,对于工作过程中解决滑动事件冲突非常有帮助。比如我们此时有一个父控件ViewPager,这个ViewPager其中一个Item是ScrollView,此时会发生什么问题呢?当ViewPager滑动到ScrollView这个条目的时候,再左右滑动,发现ViewPager再也左右滑动不了了。这是为什么呢?我们结合图6一起来分析一下。 1.我们都知道ViewPager是能够...原创 2019-06-13 12:01:35 · 803 阅读 · 0 评论 -
android 重识 Handler
0. 前言做 Android 开发肯定离不开跟 Handler 打交道,它通常被我们用来做主线程与子线程之间的通信工具,而 Handler 作为 Android 中消息机制的重要一员也确实给我们的开发带来了极大的便利。Handler应用之广泛,可以说只要有异步线程与主线程通信的地方就一定会有 Handler。所以搞懂 Handler 对理解Android非常有必要。那么,Handl...转载 2019-03-08 10:55:42 · 190 阅读 · 0 评论 -
Android系统启动流程(四)Launcher启动过程与系统启动流程
相关文章Android系统架构与系统源码目录Android系统启动流程(一)解析init进程启动过程Android系统启动流程(二)解析Zygote进程启动过程Android系统启动流程(三)解析SyetemServer进程启动过程前言此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的...转载 2019-03-08 10:56:21 · 236 阅读 · 0 评论 -
Android系统启动流程(三)解析SyetemServer进程启动过程
相关文章Android系统架构与系统源码目录Android系统启动流程(一)解析init进程启动过程Android系统启动流程(二)解析Zygote进程启动过程前言上一篇我们学习了Zygote进程,并且知道Zygote进程启动了SyetemServer进程,那么这一篇我们就来学习Android7.0版本的SyetemServer进程的启动过程。1.Zygote启动Syetem...转载 2019-03-08 10:56:02 · 137 阅读 · 0 评论 -
Android系统启动流程(二)解析Zygote进程启动过程
相关文章Android系统架构与系统源码目录Android系统启动流程(一)解析init进程启动过程前言上一篇文章我们分析了init进程的启动过程,启动过程中主要做了三件事,其中一件就是创建了Zygote进程,那么Zygote进程是什么,它做了哪些事呢?这篇文章会给你这些问题的答案。1.Zygote简介在Android系统中,DVM(Dalvik虚拟机)、应用程序进程以及运行系...转载 2019-03-07 18:48:15 · 202 阅读 · 0 评论 -
Android系统启动流程(一)解析init进程启动过程
相关文章Android系统架构与系统源码目录前言作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来一一讲解它们,这一篇我们就来学习init进程。1.init简介init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zyg...转载 2019-03-07 18:44:50 · 231 阅读 · 0 评论 -
Android应用程序进程启动过程(前篇)
相关文章Android系统架构与系统源码目录Android系统启动流程(一)解析init进程启动过程Android系统启动流程(二)解析Zygote进程启动过程Android系统启动流程(三)解析SyetemServer进程启动过程Android系统启动流程(四)Launcher启动过程与系统启动流程前言在此前我讲过Android系统的启动流程,系统启动后,我们就比较关心...转载 2019-03-07 18:42:06 · 169 阅读 · 0 评论 -
Android动态换肤原理解析及实践
前言:本文主要讲述如何在项目中,在不重启应用的情况下,实现动态换肤的效果。换肤这块做的比较好的,有网易云音乐,qq等,给用户带来了多样的界面选择和个性化定制。之前看到换肤的效果后对这块也比较好奇,就抽时间研究了下,今天给大家分享解析原理和实践中遇到的问题。为什么要做动态换肤:动态换肤可以满足日常产品和运营需求,满足用户个性化界面定制的需求等等...转载 2019-02-13 14:44:52 · 291 阅读 · 0 评论 -
Android动态换肤框架实现
今天介绍一下Android 中的常用的换肤策略,同时动手实现一个动态换肤的框架先上效果图: 换肤概念 换肤: 在android中是指 对 文字、 颜色、 图片 等的资源的更换。 人 : 对应于现实生活中,就是我们的 肤色 、 衣服 等的更换。 有什么好处或者说 目的是什么 ?? 对应于我们android 中呢,就是 可以 满足用户的新...转载 2019-02-13 14:37:56 · 1548 阅读 · 1 评论 -
开源最佳实践:Android平台页面路由框架ARouter
摘要:为了更好地让开发者们更加深入了解阿里开源,阿里云云栖社区在3月1号了举办“阿里开源项目最佳实践”在线技术峰会,直播讲述了当前阿里新兴和经典开源项目实战经验以及背后的开发思路。在本次在线技术峰会上,阿里云资深开发工程师刘志龙分享了Android平台页面路由框架ARouter的技术方案、解决的问题以及在实际场景中的最佳实践。演讲嘉宾介绍:刘志龙(花名正纬),阿里云资深开发工程师,主要从事An...转载 2019-02-17 19:32:50 · 725 阅读 · 0 评论 -
app启动原理及优化
App 启动时间是什么 ,从哪里开始 (我们要知道启动时间是怎么算出来的)https://segmentfault.com/a/1190000007406875#articleHeader20 启动定义当手指点击app图标 到加载第一个页面为止 trace文件分析http://www.ituring.com.cn/article/273967 启动类型...原创 2019-01-07 14:18:07 · 864 阅读 · 0 评论 -
android 图片内存处理
Bitmap内存占用内存大小计算 ARGB_8888 ARGB各占8位,即WIDTH*HEIGHT*4 RGB_565 R5位,G6位,B5位,即16位 WIDTH*HEIGH*2 getByteCount 返回可用于存储此位图像素的最小字节数。BitmapFactory.Options 控制解码图片参数inDensity: 表示这个...原创 2019-01-17 16:15:15 · 396 阅读 · 0 评论 -
Android 文件压缩方式(重点libjpeg-turbo)
文件压缩方式1.质量压缩 2.尺寸压缩 3.格式选择:JPEG/WEBP (4.0以上) 质量压缩 质量压缩也是清晰度的压缩。它牺牲掉了一些画面细节,这些丢失的细节或许可以被肉眼观察到,这种压缩也叫有损压缩。尺寸压缩 尺寸压缩就是图片宽高的减小。图片宽高减小了,图片文件大小也就减小了。格式选择 jpeg比png压缩率高,webp压缩率一般比jpeg高...原创 2019-01-17 15:57:02 · 395 阅读 · 0 评论 -
AndroidUI绘制流程
UI绘制流程 1、Measure MeasureSpec:在Measure流程中,系统将View的LayoutParams根据父容器所施加的规则转换成对应的MeasureSpec, 在onMeasure中根据这个MeasureSpec来确定view的测量宽高 1)、测量模式 EXACTLY :父容器已经测量出所需要的精确大小,这也是childview的最终大小 ...原创 2019-01-04 15:44:10 · 563 阅读 · 0 评论 -
Android 布局渲染流程与原理
首先,我们要知道Android系统每隔16ms就重新绘制一次Activity,也就是说,我们的应用必须在16ms内完成屏幕刷新的全部逻辑操作,这样才能达到每秒60帧,然而这个每秒帧数的参数由手机硬件所决定,现在大多数手机屏幕刷新率是60赫兹(赫兹是国际单位制中频率的单位,它是每秒中的周期性变动重复次数的计量),也就是说我们有16ms(1000ms/60...原创 2019-01-07 17:14:34 · 2489 阅读 · 0 评论 -
AsyncTask源码分析
各版本AsyncTask之间的差异各版本AsyncTask之间的差异主要集中在线程池的使用这一块。主要的分界点有2个,分为3个阶段。第一阶段是3.0以前的版本,第二是3.0-4.4版本的阶段,第三个是4.4版本以后的阶段。那我们一个一个阶段来看。3.0之前版本中AsyncTask这里使用2.3版本的AsyncTask源代码: private static final int...原创 2019-01-18 16:40:11 · 128 阅读 · 0 评论 -
Android 服务保活
自己曾经也在这个问题上伤过脑经,前几日刚好有一个北京的哥们在QQ说在做IM类的项目,问我进程保活如何处理比较恰当,决定去总结一下,网上搜索一下进程常驻的方案好多好多,但是很多的方案都是不靠谱的或者不是最好的,结合很多资料,今天总结一下Android进程保活的一些方案,都附有完整的实现源码,有些可能你已经知道,但是有些你可能是第一次听说,(1像素Activity,前台服务,账号同步,Jobsc...转载 2019-01-22 10:46:54 · 2384 阅读 · 1 评论 -
Android dex加密与解密 application替换
libcore\dalvik\src\main\java\dalvik\system ClassLoader 1、dx sdk/build-tools,class/jar生成dex文件命令: dx --dex --output 文件名.dex 文件名.jar2、zipalign sdk\build-tools ,apk整理对齐工具。 未压缩的数据开...原创 2019-01-21 15:13:48 · 1611 阅读 · 1 评论 -
Android 热修复
本文框架什么是热修复?热修复框架分类技术原理及特点Tinker框架解析各框架对比图总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。一、什么是热修复?正常开发流程热修复开发流程热修复优势修复什么?二、热修复框架分类现状:百花齐放百家争鸣简单分类更合理的分类三、技...转载 2019-01-21 14:44:04 · 126 阅读 · 0 评论 -
SparseArray ArrayMap 代替HashMap 以及 onTrimMemory与onLowMemory
SparseArray ArrayMap 代替HashMap 以及 onTrimMemory与onLowMemory在Android开发时,我们使用的大部分都是Java的api。其中我们经常会用到java中的集合,比如HashMap 使用HashMap非常舒服,但是对于Android这种内存敏感的移动平台,很多时候使用这些java的api并不能达到更好的性能,相反...原创 2019-01-08 20:13:54 · 142 阅读 · 0 评论 -
内存抖动、gc回收算法以及OOM
内存抖动、gc回收算法以及OOM内存抖动 内存抖动是指内存频繁地分配和回收,而频繁的gc会导致卡顿,严重时和内存泄漏一样会导致OOM。 内存抖动为什么会造成OOM这关系到Java的垃圾回收。 垃圾回收 在对对象进行回收前需要对垃圾进行采集,不同的虚拟机实现可能使用不同的垃圾收集算法,不同的收集算法的实现也不尽相同。不同的算法各有各的优劣势。常用的收集算...原创 2019-01-08 20:00:37 · 3191 阅读 · 0 评论 -
内存优化
内存泄漏内存管理内存模型 Android原生开发以java为主。在java中,Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,所以Java内存模型,也就是指Java虚拟机的运行时内存模型。 java中内存全权交给虚拟机去管理,那虚拟机的运行时内存是如何构成的? 很多时候,我们...原创 2019-01-08 14:59:18 · 1539 阅读 · 0 评论