
Android进阶之旅
文章平均质量分 95
围绕Android知识体系展开,只发布有价值、有深度的文章。力求图文结合清晰明了。
大圣代
热爱技术,热爱生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[实践—网络优化] 升级 HTTP2 协议
本文基于真实项目优化过程奇怪的错误日志在 firebase 统计的日志中发现出现频率最高的问题和 Http2 连接超时有关系,但是和服务端交谈得知他们并没有开启 Http2!那么这个问题怎么来的呢?是 Okhttp 内部错误问题还是我们使用不当导致的。网络出了问题怎么办,答案只有一个:抓包!使用 WireShark 抓包看到了如下内容:在 Client Hello 的时候客户端在 ALPN 协议中声明了客户端支持的协议类型,这符合 OkHttp 的默认配置在 Server He.原创 2021-04-29 14:53:48 · 889 阅读 · 0 评论 -
[实践—卡顿优化] 替换 SharePreferences 为 MMKV
替换 SharePreferences 为 MMKV本文基于真实项目优化经验众所周知 SharedPreferences 有性能问题,在压力大的情况下无论是读还是写都有 ARN 的可能,最近监控返现 SharedPreferences 的问题也出现在了 togo 中,还挺严重,决心搞掉他。解决方案很明确:使用 MMKV 替换掉 SharePreferences。MMKV 项目地址:https://github.com/Tencent/MMKVSharePreference原创 2021-04-29 14:34:45 · 1246 阅读 · 0 评论 -
「抄底 Android 内存优化 5」—— GC 回收器与内存分配策略
垃圾回收集(Garbage Collection,下文简称GC)并不是为 Java 而诞生的,在1960年诞生于麻省理工学院的 Lisp 是第一门开始使用内存动态分配和垃圾收集技术的语言。经过 60 年的发展内存自动回收技术已经逐步成熟,看似一切都已经进入了自动化的时代。那么还为什么要学习垃圾回收和内存分配策略呢?答案很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。原创 2020-08-31 11:39:14 · 654 阅读 · 0 评论 -
「抄底 Android 内存优化 3」 —— JVM 内存管理
你知道 JVM 进程的内存布局吗?原创 2020-08-02 14:58:33 · 1739 阅读 · 0 评论 -
「抄底 Android 内存优化 2」 —— Linux 内存管理
Android 系统是基于 Linux 打造的,要想学好 Android 内存相关知识,了解 Linux 是十分必要的。原创 2020-08-02 14:39:02 · 656 阅读 · 0 评论 -
「抄底 Android 内存优化 1」—— 虚拟内存
CPU 指令对内存的要求对于 CPU 执行指令来说有三种重要的寄存器:PC 寄存器(Program Counter Register:程序计数器),我们也称作指令地址寄存器(Instruction Address Register)。顾名思义,他就是用来存储下一条指令的地址的。指令寄存器(Instruction Register): 存储当前正在执行的指令。条件寄存器(Status Register),用里面的一个一个标记位(Flag),存放 CPU 进行算术或者逻辑计算的结果。原创 2020-07-23 21:21:15 · 2614 阅读 · 0 评论 -
关于 Kotlin 静态代码检测工具 detekt 的说明
项目地址介绍detekt 是一款 kotlin 代码静态检测工具,他对标的是 Java 静态检测工具 checkStyle。detekt 有着检测快、功能强、可配置高等特点,可以帮助开发者尽早的发现代码中的坏气味。除了 detekt 还有一种成熟的方案:ktlint。 但 ktlint 的会按照内置规则修改代码,这是不可容忍的。虽然 detekt 配置起来复杂一些,但是更加灵活,可以保障团队的代码风格一致,并提前发现不良代码。另外,detekt 的规则是 ktlint 的超集可以通过一下配置添加.原创 2020-07-11 16:54:47 · 5134 阅读 · 2 评论 -
“啥 Handler 原理你都不知道,还敢来面试……”
概述Android 的消息机制主要指的是 Handler 的运行机制,从开发者的角度来说 Handler 是 Android 消息机制的上层接口,而底层的逻辑则是由 MessageQueue、 Looper 来完成的。Handler 的设计目的是为了解决不能在 Android 主线程中做耗时操作而又只有主线程才能访问 UI 的矛盾。通过 Handler 消息机制可以让开发者在子线程中完成耗时...原创 2020-05-07 20:00:22 · 500 阅读 · 0 评论 -
【Android View事件(二)】详解事件分发机制
Android事件分发机制不仅仅是核心知识更是难点,这对于不少初学者甚至是中级开发者来说都会觉得困惑。另外,View的另一大难题就是滑动冲突,解决它的方法就不需要掌握事件分发机制作为理论基础,因此掌握好View的事件分发机制是十分重要的。本篇文章将以图文结合的方式,深入介绍View的事件分发机制。而后面的文章我将会详细分析View 的滑动以及滑动冲突,敬请期待。原创 2017-10-15 19:18:02 · 1157 阅读 · 0 评论 -
[Android View 知识体系] 必知必会 View 基础知识
在《【Android 控件架构】详解Android控件架构与常用坐标系》这篇文章中,我曾在【常用坐标系】一节中简单描述过 MotionEvent 常用方法,鉴于最近工作中大量处理了View触摸事件,特此展开讨论。1,MotionEvent对于 MotionE原创 2017-08-26 17:06:18 · 2274 阅读 · 1 评论 -
【Android View源码分析(一)】setContentView加载视图机制深度分析
在前面《【Android 控件架构】详解Android控件架构与常用坐标系》的文章中我们提到了setContentView()方法,当时只是匆匆带过,并没有阐明具体流程。而这篇文章就是从Activity中的setContentView()方法出发结合原创 2017-08-14 23:42:47 · 1704 阅读 · 0 评论 -
【Android 控件架构】详解Android控件架构与常用坐标系
前言View在Android的世界中扮演着重要的角色,正是这些控件组成了一个又一个精美的App。View体系是Android界面编程的核心,虽然它不属于四大组件但是它的重要行却毫不逊色,这个系列我会陆续从View的滑动事件、View 的事件反馈、自定义View等多个方面逐步介绍Android View体系。如果能帮助到你,那是我莫大的荣幸。Android控件框架在Android的世界中View是所有原创 2017-08-01 22:58:45 · 1533 阅读 · 0 评论 -
【厉害了我的哥】—— 快速布局神器Flexbox布局
本文将介绍Flexbox在 CSS3,React Native ,Android中相关属性,带领大家对于Flex有一个全面性的了解。原创 2016-11-28 17:55:37 · 17515 阅读 · 7 评论 -
【Android进阶】浅析Android Binder机制
APP内存的使用,是评价一款应用性能高低的一个重要指标。虽然现在智能手机的内存越来越大,但是一个好的应用应该将效率发挥到极致,精益求精。本文是【Android 性能优化】系列的第二篇文章,我们在第一篇【Android 性能优化】—— UI篇中主要介绍了Android界面的优化的原理以及方法,这一篇中我们将着重介绍Android的内存优化。本文的篇幅很长,但是请不要嫌烦原创 2017-03-03 20:20:46 · 11389 阅读 · 1 评论 -
【Android 性能优化】—— 详解内存优化的来龙去脉
APP内存的使用,是评价一款应用性能高低的一个重要指标。虽然现在智能手机的内存越来越大,但是一个好的应用应该将效率发挥到极致,精益求精。本文是【Android 性能优化】系列的第二篇文章,我们在第一篇【Android 性能优化】—— UI篇中主要介绍了Android界面的优化的原理以及方法,这一篇中我们将着重介绍Android的内存优化。本文的篇幅很长,但是请不要嫌烦原创 2017-03-19 16:43:06 · 12830 阅读 · 10 评论 -
【Android 性能优化】—— 打造丝滑的 UI 界面
1. 前言随着最近几年移动市场蓬勃发展,引来大批人员投入到Android、IOS的开发前线,与此同时全国各大培训机构每月都培养出成千上万名号称拥有2到3年工作经验的开发者。当然,这都已经不是什么秘密了,从目前来看,中国IT行业的主力军基本上都走过培训的道路。但问题是,这号称2~3年工作经验者,使招聘单位错误的认为:2~3年开发经验是和刚刚结束的培训经历基本上划是等号地。这就导致了企业大幅度提高用人标原创 2017-03-13 16:20:33 · 2771 阅读 · 0 评论 -
[Android 自定义 View] —— 深入总结 onMeasure、 onLayout
onMeasure、onLayout 可以说是自定 View 的核心,但是很多开发者都没能理解其含义与作用,也不理解 onMeasure 、 xml 指定大小这二者的关系与差异,也不能区分 getMeasureWidth 与 getWidth 的本质区别又是什么。本文将通过理论加实践的方法带领大家深入理解 onMeasure 、onLayout 的定义、流程、具体使用方法与需要注意的细节。原创 2019-08-25 22:35:01 · 1552 阅读 · 0 评论 -
[Android 自定义 View] 自定义属性你真的理解吗?
想必很多同学都已经对于自定义属性使用的得心应手了,但是有一些细节你真的知道吗?比如 AttributeSet、TypedArray 、declare-styleable 这些类和标签的内容你都清楚吗,在获取自定义属性的时候为什么要用```javaContext.obtainStyledAttributes(AttributeSet, R.styleable.XXXX);```方法呢?所有的答案都会在这篇文章里原创 2019-08-12 01:00:28 · 539 阅读 · 0 评论