Android 源码
文章平均质量分 76
jfson_土豆
挖土豆
展开
-
Android Studio 编译系统源码
环境配置 & 下载参考文章 官方文档 湫水blog 清华镜像 调试 以下所有操作在mac上进行推荐下载 7.0及以上系统!!!1.创建磁盘映像(80G)$ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g ~/android.dmg2.安装MacPorts (类似brew原创 2017-07-10 18:55:10 · 2319 阅读 · 0 评论 -
Android 自定义View 解耦框架
起因项目越来越大,解耦越来越有必要。从架构上解耦mvc到mvp,从功能上解耦和拆分,这就用到了自定义View,自定义View往往也需要用到Activity/Fragment的生命周期。这时候通常做法是在Activity/Fragment中对View进行生命周期的调用透传。如果自定义View的功能逻辑过于复杂后,再拆解出一个MVP层级,Presenter层和View层也需要再重复的透传一层生命周期原创 2018-02-10 23:57:12 · 739 阅读 · 0 评论 -
Window 窗口
1.什么是Window1.1、代码层面来看,Window是一个abstract类。/** * Abstract base class for a top-level window look and behavior policy. An * instance of this class should be used as the top-level view added to the *原创 2017-12-29 09:08:26 · 283 阅读 · 0 评论 -
Android 缓存机制 LRUCache
LRUCache1.Android 的缓存中不管是内存缓存和磁盘缓存都用到了LruCache,LruCache的核心思想就是LRU(Least Recently Used)算法LRU 算法LRU(Least Recently Used)直面翻译过来:最近最少使用,就是淘汰旧数据的策略,保留最近访问过的数据。如果需要加载新数据但空间不足的情况下,会按照最近访问时间排序,将最老的数据淘汰掉。 辅原创 2017-12-22 15:17:29 · 263 阅读 · 0 评论 -
Fragment 的生命周期来龙去脉
Fragment的生命周期我们都不陌生,但是其如何利用FragmentManager从Activity生命周期挂载而来的呢,尤其是看了glide源码后,发现其巧妙的利用了FragmentManager来绑定自己的生命周期,那么为了更清晰的深入理解,一起来看下6.0的源码是如何处理的。FragmentActivity1.从启动一个FragmentActivity开始。从onCreate()方法中原创 2017-11-06 18:21:13 · 604 阅读 · 0 评论 -
Android源码(10) --- Binder(4) ServiceManager 启动
纵观Binder通讯过程,无不在跟ServiceManager打交道,了解ServiceManager 交互流程就显得很有必要了。ServiceManager分为启动和、获取、添加、注册服务。首先从启动过程来了解。源码路径android/system/core/rootdir/init.rcandroid/frameworks/native/cmds/servicemanager/ |原创 2017-08-08 19:25:12 · 375 阅读 · 0 评论 -
Android源码(8) --- Binder(2) 序列化
Android 开发的时候,在对数据进行持久化的时候,或者数据传递的时候会用到序列化,这时候可以对当前数据类实现Serializable或者Parcelable接口。序列化序列化指的是将一个实例对象编码成字节流,并从字节流编码中重新构建对象实例的能力。将一个对象编码成字节流,称为序列化;从一个字节流中读出一个对象实例,称为反序列化。使用场景1.持久化存储对象2.序列化对象在网络中传输3.原创 2017-07-31 19:54:48 · 258 阅读 · 0 评论 -
Android源码(9) --- Binder(3) AIDL使用
要想了解Binder的原理,结合使用方便我们更简单的去理解调用逻辑。AIDL :Android Interface definition language 我们可以理解为Android 接口定义语言。通过它可以实现进程间的通讯(IPC),如何实现AIDL呢? 进程间通讯需要两个进场,体现在Android中就需要两个App(一个作为Server,一个作为Client).接下来看如何使用AIDL来进行进原创 2017-07-31 19:55:33 · 296 阅读 · 0 评论 -
Android 源码(6) --- 异步消息机制Handler、Looper、MessageQueue
Handler、Looper、MessageQueue 初始化1.在 UI 线程创建 Handler,通常直接new Handler;private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.hand原创 2017-07-12 20:03:18 · 323 阅读 · 0 评论 -
Android源码(7) --- Binder(1) Linux IPC 机制
Linux IPC 机制 IPC(InterProcess Communication)进程间通讯,我们都知道Android内核其实就是Linux内核,而每个Android Application进程其实就是一个Linux进程,Linux 已经有比较好的IPC机制,为什么Android用Binder实现IPC机制呢?,分析Linux 一下的IPC 机制,方便深入理解Android Binder机原创 2017-07-20 19:51:33 · 353 阅读 · 0 评论 -
Android源码(5) --- Application 启动流程
应用启动流程 每个Application Linux进程中,Android操作系统会启动这个进程当这个Android组件需要执行的时候,当其不在长时间使用或者系统必须回收内存为其他App时,这个进程会被干掉。回顾:上篇blog中,介绍了Launcher启动流程,最后点击桌面图标启动应用protected void onListItemClick(ListView l, View v, int原创 2017-07-12 20:02:23 · 316 阅读 · 0 评论 -
Android源码(4) --- 系统 Mainfest 文件解析流程
系统 Mainfest 文件解析流程 为什么要看 Mainfest 文件解析流程呢,因为解析来分析apk的安装流程需要用到,而且 AndroidMainfest 文件是程序的配置文件,了解其解析流程还是非常有必要哒~ 之前的分析中,系统会在启动时读取所有app的Mainfest以便于启动某个应用。1.入口在PackageManagerService 中,系统去解析app文件。那么从构造函数开始原创 2017-07-11 13:01:24 · 755 阅读 · 0 评论 -
Android源码(3) --- 系统Launcher 启动流程
Launcher 启动流程1 启动Launcher在之前分析了一下SystemServer源码,最后启动boot/core/other … Service,在startOtherService 中,有调用到 mActivityManagerService.systemReady();mActivityManagerService.systemReady(new Runnable() {原创 2017-07-11 13:00:27 · 308 阅读 · 0 评论 -
Android源码(2) --- SystemServer进程启动流程
SystemServer 进程1.1 SystemServer进程是由Zygote进程fork 出来的。上篇介绍了fork过程1.2 SystemServer进程 是用来启动各种系统服务的进程,例如ActivityManagerService,WindowManagerService,PowerManagerService,PackageManagerService等等,当应用需要系统服务也是通原创 2017-07-11 12:59:52 · 303 阅读 · 0 评论 -
Android源码(1) --- Zygote进程启动流程
Zygote进程简介什么是Zygote进程? Zygote进程 是整个Android系统的根进程,包括SystemServer进程和所有应用进程在内都是通过Zygote进程 fork 出来的。Zygote进程则是通过Linux系统init进程启动。启动顺序: Linux系统init进程 –> Zygote进程 –> SystemServer进程 –> Application 进程init进程:A原创 2017-07-11 12:59:01 · 236 阅读 · 0 评论 -
Android 项目构建过程
Handler、Looper、MessageQueue 初始化1.在 UI 线程创建 Handler,通常直接new Handler;private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.hand原创 2017-07-11 12:58:14 · 268 阅读 · 1 评论 -
SVGA源码
SVG 概念原文地址:https://jfson.github.io/2018/06/21/49-svga/* SVG 实际上指的是设计软件中的概念:SVG图片格式,一种矢量图形。* 另一个角度来讲一张图或者一个动画,是由很多上下层级的图层构成。比如当前的简单的图,看到的是一张图,但在设计工具中是三个图层构成,有着不同的上下层级顺序。SVGA成本* SVGA目不支持种类:...原创 2018-06-21 00:35:50 · 4234 阅读 · 6 评论