![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 进阶
文章平均质量分 86
拭心
我的新书《Android 性能优化入门与实战》上架了,快速提升技术实力,强烈推荐!!!
展开
-
十年磨一剑,我的 Android 性能书上架了!
书籍内容主要包括「市场需求、认识性能优化/测试、专项优化」三部分,分别介绍:不同级别安卓需要具备的知识点、优秀的开发者素质是什么性能优化和性能测试的方法论内存/卡顿/启动优化的线上线下优化方式等读完这本书,你可以有这些收获:获得软素质的提升方向学习到大厂的性能优化体系。原创 2024-03-26 23:25:51 · 448 阅读 · 2 评论 -
Android 发布 15 周年了!Google 员工说出了这些年的美好回忆
自从带有 Android Market(现在的 Google Play)的第一版 Android 操作系统在 T-Mobile G1 上亮相以来,已经过去了 15 年。这些年有许多手机、雕像、“甜点”和活动诞生。原创 2023-10-26 23:46:21 · 387 阅读 · 0 评论 -
深入理解图片内存优化的常见方案和 AndroidBitmapMonitor 的原理
好了,到这里我们就了解了图片内存分析新方案 AndroidBitmapMonitor 的实现原理。大图报警图片泄漏监控图片重复解码等等源码地址:https://github.com/shixinzhang/AndroidBitmapMonitor两年创业的得与失简历怎么投效率最高七年老安卓的九十月小结六年安卓开发的技术回顾和展望两位阿里 P10 的成长经历,让我学到这几点。原创 2023-03-26 18:27:51 · 691 阅读 · 1 评论 -
自研的内存分析利器开源了!Android Bitmap Monitor 助你定位不合理的图片使用
我的 2023 年第一个作品!原创 2023-02-22 07:45:00 · 612 阅读 · 1 评论 -
Android 资深开发需要掌握的常用框架原理
什么是资深 Android 开发?每个人可能有自己的见解。但公认的是,资深 Android 开发,对常用框架一定不能仅仅停留在使用,更要明白其设计思想及实现原理。本文汇总了 Android 常用框架的解析文章,深入分析了事件总线、图片加载、网络请求和热修复等框架的设计思想及实现原理,希望能为大家在成为更高阶的 Android 开发提供帮助。原创 2023-02-05 08:44:30 · 680 阅读 · 0 评论 -
Android 虚拟机:你需要掌握的基本知识
在进入查找流程之前,先简要介绍一些前置的细节点,主要包括 dex file, oat file, mirror::Class, ArtField, ArtMethod, DexCache, ClassTable 等。这些会在后面的流程里反复出现,所以先讲一下。前置细节dex2oat 触发场景https://cs.android.com/android/platform/superproject/+/master:art/dex2oat/dex2oat.ccdex2oat 的作用:对 dex 文件进行原创 2021-12-31 09:55:39 · 4698 阅读 · 0 评论 -
重温 C/C++ 笔记
好久没写博客了,现在更习惯用脑图记录知识点,记一些关键字即可,快速又成体系。不过分享的初心还是要保持,不能总是索取而不贡献,现在雷同的内容太多了,还是需要一些较为稀缺的信息。在通过其他前辈分享的文章学习知识、解决问题后,这种想法就更加强烈。今天遇到一个奇怪的问题,报错如下:* What went wrong:Execution failed for task ':profmancompat:externalNativeBuildRelease'.> Build command failed原创 2020-10-24 21:22:15 · 10304 阅读 · 0 评论 -
Android 框架学习5:微信热修复框架 Tinker 从使用到 patch 加载、生成、合成原理分析
这篇文章是基于内部分享的逐字稿内容整理的,现在比较喜欢写逐字稿,方便整理成文章。文章目录目录Tinker 介绍使用TinkerApplicaition``SampleApplicaitionLike``TinkerInstaller总结运行时 Tinker 是如何加载补丁加载 dex混合编译与热修复加载资源加载 sodex diffdex 格式tinker patch 格式了解diff 和合...原创 2019-12-01 12:51:00 · 14230 阅读 · 5 评论 -
Android 框架学习4:一次读懂热门图片框架 Picasso 源码及流程
Android 框架学习1:EventBus 3.0 的特点与如何使用 Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线 Android 框架学习3:我从 EventBus 中学到的精华通过本篇文章你将学到如下内容:假如我们来写一个框架走近 Picasso认识核心 API请求信息相关的类加载行为相关的类图片获取处理相关的类调度器...原创 2018-03-27 21:57:20 · 8641 阅读 · 12 评论 -
Android 进阶13:几种进程通信方式的对比总结
不花时间打基础,你将会花更多时间解决那些不必要的问题。读完本文你将了解:RPC 是什么IDL 是什么IPC 是什么Android 几种进程通信方式如何选择这几种通信方式ThanksRPC 是什么RPC 即 Remote Procedure Call (远程过程调用) 是一种计算机通讯协议,它为我们定义了计算机 C 中的程序如何调用另外一台计算机 S 的程序,让程序员不需要操心底层网络协原创 2017-06-05 01:16:48 · 39804 阅读 · 12 评论 -
Android 进阶14:源码解读 Android 消息机制( Message MessageQueue Handler Looper)
不要心急,一点一点的进步才是最靠谱的。读完本文你将了解:前言Message如何获取一个消息Message.obtain()消息的回收利用MessageQueueMessageQueue 的属性何时初始化消息入队的过程消息出队的过程Looper线程相关 ThreadLocal无限循环调度如何停止HandlerHandler 的属性发送消息...原创 2017-06-06 23:59:50 · 10365 阅读 · 15 评论 -
Android 进阶17:Fragment FragmentManager FragmentTransaction 深入理解
日常开发中我们经常使用 Fragment 管理布局,使用起来非常方便,但是在简单的 API 背后隐藏了什么操作,很多人恐怕不了解。如果你回答不出这些问题,那这篇文章可能就对你有些帮助:Fragment FragmentManager FragmentTransaction 的关系和作用Fragment 如何实现布局的添加替换嵌套 Fragment 的原理读完本文你将了解:Fragment 的原创 2017-09-29 13:36:42 · 31494 阅读 · 12 评论 -
RxJava 1.x 笔记:组合型操作符
最近去检查眼睛,发现度数又涨了,唉,各位猿多注意保护自己的眼睛吧!前面学了 RxJava 的三种关键操作符:创建型操作符过滤型操作符变换型操作符读完本文你将了解第四种(组合型操作符):组合型操作符ZipzipzipWithCombineLatestcombineLatestwithLatestFromJoinjoingroupJoinMergemergemergeDe原创 2017-07-26 19:36:24 · 4970 阅读 · 0 评论 -
RxJava 1.x 笔记:创建型操作符
本篇文章是阅读 官方文档 的笔记。 作者:shixinzhang(百度搜索 “shixinzhang CSDN” 即可找到我)RxJava 也用了有段时间,那么多操作符总不想去记,遇到了才去查一下,查的次数多了感觉效率太低,还不如先过一遍官方文档。因此接下来几篇我们一起刷一遍 RxJava 官方文档,这个过程可能会很枯燥,但是像电影里少林寺练功 一样,只有先通过枯燥的学习掌握基本功,然后才能考虑如原创 2017-07-18 10:56:57 · 4537 阅读 · 0 评论 -
RxJava 1.x 笔记:变换型操作符
在写这几篇 RxJava 笔记时,发现官方文档很久都没有更新啊。一些前辈两年前写的学习笔记内容跟现在也基本一致,Rx Java 2.x 的文档也基本没有,不知道是不是缺实习生。 本文内容为 RxJava 官方文档 学习笔记 作者:shixinzhang读完本文你将了解:变换型操作符Bufferbuffercountbuffercount skipbufferbufferClosi原创 2017-07-12 23:09:03 · 5256 阅读 · 0 评论 -
Android 框架学习3:从 EventBus 中学到的精华
关联文章:EventBus 3.0 的特点与如何使用源码分析 EventBus 3.0 如何实现事件总线学习的目的是为了超越,经过前面对 EventBus 3.0 的学习,我们已经对它相当熟悉了,现在来总结下,从这个框架里我们可以学到些什么。读完本文你将了解:EventBus 解决了什么问题EventBus 的思想EventBus 的编译时注解EventBus 用到的设计模式值得学习的原创 2017-07-06 19:23:43 · 11058 阅读 · 0 评论 -
RxJava 1.x 笔记:过滤型操作符
我真的是奇怪,上下班的路上看书、看文章学习的劲头特别大,到了周末有大把的学习时间,反而不珍惜,总想打游戏,睡前才踏踏实实地写了篇文章,真是服了自己! 本文内容为 RxJava 官方文档 学习笔记 作者:shixinzhang读完本文你将了解:过滤型操作符DebouncedebouncethrottleWithTimeoutDistinctdistinctdistinctkey原创 2017-07-15 23:49:47 · 7305 阅读 · 5 评论 -
Android 进阶2:Activity 的 Task 与启动模式
读完本文你将了解:Android 中的 Task 是什么四种启动模式标志位ThanksAndroid 中的 Task 是什么我们知道,一个应用中可能有多个 Activity,而这些 Activity 被以栈的形式管理。当我们新打开 Activity 或者按返回时,会导致 Activity 的入栈/出栈。有时候我们要进行一些跨应用的操作,比如拍照、P 图、分享到朋友圈,这一系列操作中会有多个应原创 2017-05-02 16:28:37 · 4452 阅读 · 0 评论 -
Android 进阶4:Service 的一些细节
读完本文你将了解:Service 简介Service 的两种启动方式两种状态下服务的生命周期停止服务前台服务Android 50 后需要显式启动 ServiceService 中弹出 DialogThanksService 简介Service 的概念相信大家都知道:后台运行服务,它可以在后台执行长时间运行操作而不提供用户界面。由于 Service 在用户切换到其他应用时依然可以运行,原创 2017-05-23 18:40:27 · 5603 阅读 · 0 评论 -
Android 进阶3:Intent 与 IntentFilter 匹配规则
读完本文你将了解:IntentIntent 携带的信息Intent 的类型隐式 IntentIntent 过滤器 IntentFilterIntentFilter 的匹配规则action 的匹配规则category 的匹配规则data 的匹配规则总结过滤规则注意ThanksIntentIntent 是一个消息传递对象,我们可以使用它启动其他应用组件完成特定的任务。我们可以通过原创 2017-05-06 23:33:07 · 7520 阅读 · 0 评论 -
Android 进阶6:两种序列化方式 Serializable 和 Parcelable
什么是序列化我们总是说着或者听说着“序列化”,它的定义是什么呢? 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板原创 2017-05-17 23:57:07 · 20278 阅读 · 0 评论 -
Android 进阶7:进程通信之 AIDL 的使用
记得 2015 年实习面试,笔试题里就有这道题:请介绍下 AIDL。当时的我是懵逼的,只好老老实实空着。没想到后来面试时面试官大哥嘿嘿一笑说他也没用过这玩意,真是够实诚的。笔试完查了这个知识点,似懂非懂也没深究。去年看《安卓开发艺术探索》时也学了这部分内容,但是可能当时水平不够,或者只是看起来努力,没有真正理解精髓,没多久就又忘了个七八成。这次复习,还是老老实实敲出来,总结成文字吧,方便以后回顾。A原创 2017-05-26 11:43:31 · 64831 阅读 · 18 评论 -
Android 进阶8:进程通信之 Binder 机制浅析
读完本文你将了解:IBinderBinderBinder 通信机制Binder 驱动Service ManagerBinder 机制跨进程通信流程Binder 机制的优点总结Thanks上篇文章 Android 进阶7:进程通信之 AIDL 中我们虽然跨进程通信成功,但是还是有很多疑问的,比如:AIDL 帮我们做了什么?为什么要这么写?什么是 Binder?知其然还要知其原创 2017-05-29 11:50:28 · 20961 阅读 · 8 评论 -
Android 进阶之路(我的博客文章目录)
为了方便读者阅读以及自己回顾,总结写过的文章和一些想要写的文章目录如下:1.JavaJava 解惑:Comparable 和 Comparator 的区别Java 解惑:Random 种子的作用、含参与不含参构造函数区别Java 解惑:CharSequence 与 String 的区别 Java 解惑:String 为什么不可修改Java 关键字:finalJava 关键字:staticJava 内原创 2017-04-01 00:48:06 · 14465 阅读 · 11 评论 -
Android 进阶9:进程通信之 AIDL 解析
读完本文你将了解:AIDLAIDL 生成文件分析StubProxyAIDL 生成的内容小结AIDL 的使用回顾服务端客户端小结手动写个 Binder首先是定义跨进程接口实现 IInterface然后在其中创建这个接口与对应 Binder 的转换类 Stub最后创建代理接口在不同进程中客户端持有的是代理Thanks在 Android 进阶7:进程通信之 AIDL 的使用原创 2017-05-31 23:58:12 · 8220 阅读 · 2 评论 -
Android 进阶10:进程通信之 Messenger 使用与解析
读完本文你将了解:Messenger 简介Messenger 的使用服务端客户端运行效果使用小结总结代码地址Thanks前面我们介绍了 AIDL 的使用与原理,这篇文章来介绍下 Android 中另一种 IPC 方式:Messenger。Messenger 简介Messenger “信使”,顾名思义,它的作用就是传递信息。Messenger 有两个构造函数:以 Handler 为原创 2017-06-01 22:57:33 · 19361 阅读 · 0 评论 -
Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)
不要害怕困难,这是你进步的机会!读完本文你将了解:OSI 七层网络模型TCPIP 四层模型TCP 协议TCP 的三次握手TCP 的四次挥手UDP 协议Socket 简介Socket 的基本操作使用 TCP 通信的 Socket 流程使用 UDP 通信的 Socket 流程使用 TCP 通信的 Socket 实现跨进程聊天创建服务端 TCPServerService在客户端原创 2017-06-04 18:18:20 · 14006 阅读 · 9 评论 -
Android 进阶11:进程通信之 ContentProvider 内容提供者
学习启舰大神,每篇文章写一句励志的话,与大家共勉。When you are content to be simply yourself and don’t compare or compete, everyone will respect you. 当你满足于做自己而不去比较或竞争时,每个人都会尊重你。读完本文你将了解:ContentProvider 简介ContentProvider 与原创 2017-06-02 23:24:08 · 21293 阅读 · 2 评论 -
Android 进阶15:HandlerThread 使用场景及源码解析
眼睛困得要死,但今天的计划不完成又怎么能睡呢?明日复明日,明日何其多啊!读完本文你将了解:HandlerThread 简介HandlerThread 源码HandlerThread 的使用场景举个栗子运行结果总结代码地址为了避免 ANR,我们常常需要在线程中做耗时操作,然后把结果抛到主线程进行处理。Android 提供了多种用于这种场景的组件,其中一种就是本篇文章要介绍的 Handl原创 2017-06-07 23:55:58 · 21836 阅读 · 11 评论 -
Android 进阶16:IntentService 使用及源码解析
It’s time to start living the life you’ve only imagined.读完本文你将了解:IntentService 简介IntentService 源码分析IntentService 的使用创建 IntentService 的子类布局界面调用方代码运行效果总结代码地址Thanks在前面两篇文章 源码解读 Android 消息机制( Me原创 2017-06-09 22:44:25 · 4416 阅读 · 1 评论 -
Android 框架学习1:EventBus 3.0 的特点与如何使用
前面总结了几篇基础,在这过程中看着别人分享自定义 View、架构或者源码分析,看起来比我写的“高大上”多了,内心也有点小波动。但是自己的水平自己清楚,基础不扎实画再多源码流程图也没什么意思,还是老老实实打好基础吧,技术这东西不能心急。在复习了 Android 跨进程、多线程通信的几种方式的基础上,为了调节下心情,我们接下来一起来学以致用,分析分析一些有名的 Android 事件总线框架。首先拿 Ev原创 2017-06-11 10:28:40 · 9241 阅读 · 2 评论 -
Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
Go beyond yourself rather than beyond others.上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这篇文章我们来揭开它神秘的面纱,看看在繁华的背后究竟是怎样的沧桑。读完本文你将了解:注解修饰订阅方法编译时处理注解生成索引创建 EventBus最关键的两个属性SubscriberMethod原创 2017-06-14 00:17:27 · 5130 阅读 · 4 评论 -
使用编译时注解简单实现类似 ButterKnife 的效果
这篇文章是学习鸿洋前辈的 Android 如何编写基于编译时注解的项目 的笔记,用于记录我的学习收获。读完本文你讲了解:什么是编译时注解APT编译时注解如何使用与编写举个例子思路创建注解创建运行时绑定的类创建注解处理器完成编写使用一下遇到的坑代码地址总结Thanks什么是编译时注解上篇文章 什么是注解以及运行时注解的使用 中我们介绍了注解的几种使用场景,这里回顾一下:编译原创 2017-07-05 19:37:42 · 6788 阅读 · 2 评论 -
Android 进阶1:Activity 的生命周期
《Android 开发艺术探索》去年就看完了,但由于当时水平不够,加上自己脑子愚笨,很多知识没有完全消化。还是再来回顾、敲敲、总结一遍吧。读完本文你将了解:典型情况下的生命周期7个生命周期一些特殊情况异常情况下的生命周期异常状态保存恢复方法系统自动做的保存恢复工作系统内存不足时优先杀死低优先级的 Activity指定在某些配置改变时 Activity 不重建Thanks典型情况下原创 2017-05-01 23:33:57 · 2976 阅读 · 0 评论