Android内核剖析
andboby
当前在某世界五百强上市公司担任技术总监及其首席架构师,曾经供职于中兴通讯股份有限公司,担任系统架构师一职;曾经2011年~2017年供职金山软件,从事移动WPS的开发,是android版的WPS核心开发人员,欢迎各位一起学校交流!
展开
-
HashMap 和 LinkedHashMap的原理详解之LinkedHashMap
LinkedHashMap 继承于 HashMap,拥有父类HashMap的所有功能。LinkedHashMap 在父类HashMap基础上,增加了顺序访问功能。LinkedHashMap 增加的2个顺序访问功能分别为 插入顺序 和 访问顺序。插入顺序,为默认顺序,和列表的插入顺序完全一致,即是依次往后插入。访问顺序,访问顺序分为2部分。第一,插入数据的话依然是和列表插入完全一致,即依...原创 2018-03-15 17:14:56 · 211 阅读 · 0 评论 -
Handler运行机制详解
1、android线程间的通讯,都是经过Handler在线程之间的切换。包括耗时任务的结果传送到UI线程等。2、Handler使用包括2种形式,一种是主线程和子线程的交互,另外一种是子线程和子线程之间的交互。3、Handler的创建,主线传入Looper.getMainLooper;如果是在子线程中创建,则需要在Looper.prepare(); 和 Loop.loop之间创建,否则会抛出...原创 2018-04-21 21:48:34 · 567 阅读 · 0 评论 -
Android内存管理
本部分将分两部分来讲解。1、android 内存回收机制,即采用了 Low Memory Killer。2、正对Low Memory Killer回收机制,那么应用程序需要在 onLowMemory 和 onTrimMemory 方法中怎么处理,来降低系统对APP进程的回收率。第二步;MIUI、华为等非原生系统,第三方软件等,将APP杀死之后,APP的重启方式。 详见:https:/...原创 2018-04-24 17:49:14 · 465 阅读 · 0 评论 -
AsyncTask原理详解!
在项目中子线程和UI线程交互过程中,经常会用到AsyncTask,AsyncTask使用场景有网络访问、上传文件等。AsyncTask的核心原理有以下几条,请配合后面详解来理解。 1、 AsyncTask主要使用的4个函数,onPreExecute、doInBackground、 onProgressUpdate、onPostExecute。 2、onPreExecute是在AsyncTa...原创 2017-09-05 18:00:14 · 1632 阅读 · 0 评论 -
Volley 详解之学到的不仅仅是volley
Volley是谷歌提供的网络访问框架,具体优缺点如下。 volley优势: 1. volley 存在2类线程,缓存线程 和 网络访问线程,默认会开取 1个缓存线程、4个网络访问线程。 2. volley 通过 采用 diskCache(磁盘缓存) + 内存缓存(缓存header信息) + 网络访问数据加载(ByteArrayPool 存放了网络请求的数据,放在内存)。 3. voll...原创 2018-08-08 11:52:53 · 414 阅读 · 0 评论 -
SpareArray 原理 及其 和HashMap的性能比较
SpareseArray 也是通过键值对存储数据,只是key为整形int , 类似于key = Interger 的HashMap,但是SpareseArray 的key 为 int 非 Interger ,更省空间。SpareArray 意为稀松数组,其结构类似于数组结构,依次排开;HashMap是散列列表,根据hash值来存储;因此SpareArray 会比 HashMap节省很多空间。...原创 2018-03-13 14:31:58 · 2487 阅读 · 0 评论 -
Android内核剖析之Window内部机制
windowManager其实指示一个接口,其具体实现是在WindowManagerImpl,而WindowManagerImpl其实什么都没做,指示调用WindowManagerGlobal中的方法来实现的,WindowManagerGlobal是个单例模式,通过Win。WindowManagerGlobal.getInstance()来获取实例。WindowManager 通过三个方法来操...原创 2018-03-14 10:01:10 · 232 阅读 · 0 评论 -
Android内核剖析之Framework框架
Framework框架包含3个主要部分,服务器端、客户端、Linux驱动服务器端主要包含以下2个主要的类:AMS(ActivityManagerService),AMS的主要作用是管理各个Activity。WMS(WindowManagerService),WMS主要管理各个窗口的叠放顺序、隐藏和显示。客户端主要包含以下几方面:ActivityThread:Activity...原创 2018-04-24 17:50:31 · 462 阅读 · 0 评论 -
JVM、Dalvik、ART 3中虚拟机的区别
JVM是JAVA的虚拟机,基于栈的, JVM将JAVA代码编码成.class类型文件。Dalvik是android的虚拟机,Dalvik是基于寄存器的,速度回更快,并且Dalvik把代码编译成.dex文件,本类型文件更适合与于手机。Dalvik是JIT(即时编译),因此每次启动运行程序,Dalvik才会把字节码转换成机器码。因此因为存在这种转换,相对于ART,会更慢、消耗内存、消耗电池。A...原创 2018-03-16 23:51:33 · 174 阅读 · 0 评论 -
APP的启动过程简介
点击APP图标的时候,会通知AMS(ActivityManagerService)启动本APP的默认Activity,默认的Activity即是Androidmanifes.xml中定义的Action为Lancher的Activity。AMS发现应用程序未启动时会创建一个dalvik进程,在本虚拟机进程中会创建主线程ActivityThread。ActivityThread中调用了main函数...原创 2018-03-16 17:05:44 · 165 阅读 · 0 评论 -
Android内核剖析之Android总架构
Android总体架构从上往下分为4层:应用层,各种APP,包括界面、JAVA语言编写的控制、Home界面、资源文件等。应用框架层,android的管理工具,例如Activity Manager、Window Manager、ContenProviders、View System、ResouceManager等Android运行核心库层,包括虚拟机Daivik,每个应用程序都拥有一个独立...原创 2018-04-24 17:50:49 · 624 阅读 · 0 评论 -
HashMap 和 LinkedHashMap的原理详解之HashMap
首先讲解HashMap的几个要点:HashMap是非线程安全的(效率最高);HashTable是线程安全的效率最低;CurrentHashMap是线程安全的,CurrentHashMap 把内部分成若干个segment,每个segment内部是线程安全的(相当于HashTable),各个segment可以并行操作,因此它的性能优于HashTable 但是 弱于 HashMap。影响Hash...原创 2018-03-14 16:38:38 · 214 阅读 · 0 评论