
从零开始解析Android原理
文章平均质量分 87
本专栏深入剖析Android框架的核心机制,包括Binder、AMS、WMS等关键模块的源码实现,结合性能优化与架构设计实战,帮助开发者掌握底层原理,提升开发效率与问题排查能力。适合中高级Android开发者进阶学习。
bjxiaxueliang
在这里,我们聊技术,也聊生活。从移动领域到网络开发,从图形图像到AI机器学习,畅谈各领域的学习经验,探讨技术趋势;分享生活点滴,吐槽日常琐事,记录旅途见闻。品一杯清茶,享一段闲暇...!
展开
-
Android R(Android 11 API 30) 新特性分析及适配指南
Android R(Android 11 API 30)于2020年9月9日正式发布,随国内各终端厂商在售Android设备的版本更新升级,应用软件对Android R 版本的兼容适配已迫在眉睫。原创 2021-03-12 15:23:52 · 6198 阅读 · 1 评论 -
Android 12(API 31)适配指南——SplashScreen
Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。原创 2022-03-16 11:34:56 · 16588 阅读 · 2 评论 -
Android 13(API 33)新特性及适配指南
Android 13(API 33)于 2022年8月15日正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内部分应用软件开发厂商已逐步接到手机厂商(华米OV等)的新版本适配要求。当前,对于Android应用开发者来说,Android 13 的软件兼容适配已需提上工作日程。原创 2022-10-24 15:39:34 · 12852 阅读 · 7 评论 -
Android 12(API 31)新特性及适配指南
Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经逐步开启了Android 12正式版本的更新。当前,对于Android应用开发者来说,Android 12 的软件兼容适配已迫在眉睫。原创 2022-03-19 22:08:09 · 15758 阅读 · 2 评论 -
一文分析 Android现状及发展前景
Coding这些年,一直低头“搬砖”,好像从未仔细审视过Android的发展现状,亦未好好思考Android的发展前景。“低头干活,还要抬头看路”,写一篇文章简要审视一下Android的发展现状、展望一下Android的发展前景。Android 诞生背景Android 发展现状Android 前景趋势从Android的诞生背景开始说起,举例一些数据看一下Android当前的发展现状,最后结合数据看一下Android的未来发展。一、诞生背景2003年10月,Andy Rubin、Rich Mi原创 2021-11-17 19:11:57 · 14553 阅读 · 0 评论 -
ARouter 源码学习之Compiler
ARouter 源码学习之Compiler官方文档: Android平台页面路由框架ARouter阿里巴巴Arouter github地址如下: ARouter gitHub 地址ARouter我的学习注释GitHub地址: ARouterArouter 使用Demo: Android_Modularization_Demo对AbstractProcessor不太熟悉的...原创 2018-03-16 17:56:20 · 3291 阅读 · 1 评论 -
ARouter 源码学习
ARouter 源码学习官方文档: Android平台页面路由框架ARouter阿里巴巴Arouter github地址如下: ARouter gitHub 地址ARouter我的学习注释GitHub地址: ARouterArouter 组件化Demo: Android_Modularization_Demo强烈建议:阅读ARouter源码前,认真阅读 ARouter官...原创 2018-04-10 17:32:59 · 961 阅读 · 0 评论 -
一文详解 Android热修复实现原理
这篇文章主要是对 **QQ空间团队** [安卓App热补丁动态修复技术介绍]的原理和实现方案进行探究。原创 2017-04-13 09:22:06 · 1371 阅读 · 0 评论 -
一文详解 Okio 输入输出流
Okio最初是作为OkHttp的一个组件出现,是 OkHttp 实现HTTP协议数据构建、解析中使用到的底层 IO 库。其相比于传统的 java.io 和 java.nio ,其在文件、网络等数据读写操作更加便捷、高效。原创 2023-07-14 09:53:20 · 904 阅读 · 0 评论 -
一文详解Interpolator插值器:为动画添加过渡效果
Interpolator 被用来修饰动画效果,定义动画的变化率。 在Android源码中对应的接口类为 TimeInterpolator,通过输入均匀变化的0~1之间的值,可以得到匀速、正加速、负加速、无规则变加速等0~1之间的变化曲线。原创 2021-08-30 19:35:22 · 1282 阅读 · 0 评论 -
Android中的Interpolator
转自: http://www.cnblogs.com/mengdd/p/3346003.htmlInterpolator用于动画中的时间插值,其作用就是把0到1的浮点值变化映射到另一个浮点值变化。 本文列出Android API提供的Interpolator的若干种实现,列出源码,并且用一个程序绘制出其数学曲线。(项目链接附在文后)。1、AccelerateDecelerateInterpola原创 2017-05-16 18:43:24 · 418 阅读 · 0 评论 -
一文了解 APK瘦身属性android:extractNativeLibs
android:extractNativeLibs属性瘦身APK先描述一下结论:android:extractNativeLibs = true时,gradle打包时会对工程中的so库进行压缩,最终生成apk包的体积会减小。但用户在手机端进行apk安装时,系统会对压缩后的so库进行解压,从而造成用户安装apk的时间变长。关于android:extractNativeLibs默认值设定方面,若开发人员未对android:extractNativeLibs进行特殊配置:minSdkVersion &原创 2021-03-26 18:54:14 · 3894 阅读 · 4 评论 -
一文详解 Android状态机StateMachine 使用方式及实现原理
`StateMachine`不是`Android SDK`中的相关API,是存在于`frameworks`层源码中的一个Java类。通过这篇文章探究一下其使用方式以及实现原理。原创 2020-02-22 16:20:56 · 7506 阅读 · 2 评论 -
一文分析 Only fullscreen opaque activities can request orientation 报错原因及解决方案
今天在三星S8上遇见一个奇葩问题`Only fullscreen opaque activities can request orientation`,探究一下Android源码,出现这个错误的原因,以及解决方案。原创 2019-03-29 15:28:38 · 2980 阅读 · 0 评论 -
ThumbnailUtils.createVideoThumbnail 获取到的帧不是视频第一个关键帧
最近项目中遇到一个获取视频首帧图片的问题。 网上一般给出的答案是用ThumbnailUtils.createVideoThumbnail(String filePath, int kind) 获取视频首帧。 我也是这么做的,但后来遇到一个ThumbnailUtils.createVideoThumbnail获取的视频帧并非视频首帧的bug。 经过对ThumbnailUtils.createV...原创 2017-03-28 15:00:20 · 8064 阅读 · 0 评论 -
Android 网络质量 + 下载测速 (facebook/network-connection-class 使用)
Android 网络质量 + 下载测速facebook/network-connection-class使用facebook/network-connection-class源码地址facebook/network-connection-class gitHub地址使用方式添加依赖// 网络测速compile 'com.facebook.network.connectionclas...原创 2019-06-25 10:12:12 · 6217 阅读 · 1 评论 -
一文详解 ArrayDeque 双端队列使用及实现原理
deque(double-ended queue)双端队列,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。原创 2020-06-04 14:51:07 · 1368 阅读 · 1 评论 -
一文详解 NanoHttpd 微型服务器原理
`NanoHttpd`仅有一个Java文件的微型Http服务器实现。其方便嵌入式设备(例如:Android设备)中启动一个本地服务器,接收客户端本地部分请求;应用场景也非常广泛,例如:本地代理方式播放m3u8视频、本地代理方式加载一些加密秘钥等。原创 2019-08-29 16:51:47 · 1748 阅读 · 0 评论 -
一文总结 Android屏幕适配
这里所说的“屏幕适配”指的是:不同屏幕分辨率,不同物理尺寸的适配。如果屏幕分辨率相同,那么直接写死像素PX就OK了;如果物理尺寸相同,那么直接按照物理尺寸大小,写好dp就OK了;今天这里介绍的适配,为一种*妥协的适配方案*:存在一种或者几种最适的分辨率或者物理尺寸,其他分辨率或者物理尺寸的屏幕为次适应。原创 2017-05-20 08:17:27 · 1061 阅读 · 0 评论 -
OKHttp 官方文档【二】
OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2、支持同一Host 连接池复用、支持Http缓存、支持自动重定向 等等,有太多的优点。一直想找时间了解一下 OkHttp 的实现原理 和 具体源码实现,不过还是推荐在使用 和 了解其原理之前,先通读一遍 OkHttp 的官方文档,由于官方文档为英文,我在通读的时候,顺便翻译了一下,如翻译有误,请帮忙指正。OkHttp官方API地址:https://square.github.io/okhttp/OKHttp 官方文档【一】翻译 2020-08-01 13:30:25 · 1568 阅读 · 0 评论 -
OKHttp 官方文档【一】
[译] OKHttp 官方文档[一]最近工作比较忙,文章更新出现了延时。虽说写技术博客最初主要是写给自己,但随着文章越写越多,现在更多的是写给关注我技术文章的小伙伴们。最近一段时间没有更新文章,虽有工作生活孩子占用了大部分时间的原因,但也有自身的懒惰,这里向小伙伴们也向自己说一声抱歉…OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2、支持同一Host 连接池复用、支持Http缓存、支持自动重定向 等等,有太多的优点。一直想找时间了解一下 OkHttp 的实现原理 和 具体翻译 2020-07-30 22:14:03 · 4918 阅读 · 0 评论 -
一文详解 RxJava2 使用及实现原理
RxJava—一个可以在JVM上运行的,基于观察者模式 实现异步操作的java库。其英文描述为:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java原创 2018-06-19 18:38:31 · 2865 阅读 · 0 评论 -
一文详解 JsBridge 实现原理
JsBridge主要用于“JS与Native的通信”,众所周知Android 4.2以下的WebView存在addJavascriptInterface漏洞的问题,为解决这一问题国内很多知名大厂很早就在各自项目中集成了JsBridge。原创 2018-03-07 11:41:41 · 1857 阅读 · 0 评论 -
Android级连异步任务——Bolts-Android使用及原理
Parse开源了一个面向iOS和Android的底层库集合,统称为Bolts。根据Parse的公告,Bolts是Parse和Facebook共同努力将两家公司各自独立开发的小型底层工具类合并的结果。Bolts-Android为一个级联的异步任务。Bolts-Android github地址: https://github.com/BoltsFramework/Bolts-Android原创 2017-03-31 16:41:11 · 1320 阅读 · 0 评论 -
Android级连异步任务——Bolts-Android使用及原理
Parse开源了一个面向iOS和Android的底层库集合,统称为Bolts。根据Parse的公告,Bolts是Parse和Facebook共同努力将两家公司各自独立开发的小型底层工具类合并的结果。Bolts-Android为一个级联的异步任务。Bolts-Android github地址: https://github.com/BoltsFramework/Bolts-Android原创 2017-03-31 16:39:10 · 3057 阅读 · 0 评论 -
Universal-Image-Loader源码收获
不熟悉Universal-Image-Loader使用的同学,可参考: “Universal-Image-Loader使用” http://xiaxveliang.blog.163.com/blog/static/29708034201582853043103/Universal-Image-Loader 如今使用广泛,最近也将公司项目中的图片下载引擎替换为了Universal-Imag...原创 2017-05-18 10:33:00 · 552 阅读 · 0 评论 -
CopyOnWriteArrayList读写锁
转自: http://ifeve.com/java-copy-on-write/Copy-On-Write是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnW转载 2017-04-10 20:08:20 · 1958 阅读 · 2 评论 -
ConcurrentHashMap 分段锁
简单转自: https://my.oschina.net/hosee/blog/639352ConcurrentHashMap使用分段锁技术,允许多个修改操作并发进行。ConcurrentHashMap内部使用段来表示这些不同的部分,每个段其实就是一个小的Hashtable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。HashTable是一个线程安全的类,它使用synch原创 2017-04-10 20:10:22 · 1875 阅读 · 0 评论 -
一文详解 SparseArray、ArrayMap 实现原理
SparseArray与ArrayMap是Android提供的两个列表数据结构。SparseArray相比于HashMap采用的是,时间换取空间的方式来提高手机App的运行效率。而ArrayMap实现原理上也类似于SparseArray。原创 2017-08-16 19:33:26 · 2538 阅读 · 0 评论 -
一文详解 BlockingQueue使用及实现原理
心血来潮,探究一下`BlockingQueue`的实现原理。原创 2018-06-22 15:32:07 · 987 阅读 · 0 评论 -
一文详解 利用LinkedHashMap实现Lru机制
Android中的LRU采用什么机制实现的? 通过这篇文章我们一起进行分析。原创 2017-05-22 10:22:20 · 2144 阅读 · 2 评论 -
一文详解 HashMap 实现原理
HashMap对于程序员来说并不陌生,无论是Java还是Android研发人员,HashMap都是日常广泛使用的数据结构,通过这篇文章探究一下其具体实现原理。原创 2017-05-22 10:16:22 · 1963 阅读 · 0 评论 -
How to handle background services in ANDROID O?
How to handle background services in ANDROID O?如何处理Android O的后台Service前段时间公司项目中做Android O的适配。在了解Android O新功能时,看到这个文章,虽然介绍的是Android O的预览版,但读了一遍感觉不错,记录下来。顺便翻译一下(不翻译大家肯定也看得懂,只是觉得单纯转一下太low了)…原文地址:How ...原创 2018-10-29 11:41:49 · 831 阅读 · 0 评论 -
MediaBrowserCompat MediaBrowserServiceCompat
MediaBrowserCompat MediaBrowserServiceCompat学习代码参考: googlesamples/android-MediaBrowserService我的源码注释与简单代码修改: AndroidHighQualityCodeStudy/android-GoogleSample-MediaBrowserServiceMediaBrowserComp...原创 2017-12-12 11:55:52 · 8275 阅读 · 2 评论 -
Android中使用AbstractProcessor在编译时生成代码
Android中使用AbstractProcessor在编译时生成代码发现这边不错的文章,忍不住转了过来,转自: http://blog.youkuaiyun.com/industriously/article/details/53932425根据这片文档的简单小demo: https://github.com/AndroidHighQualityCodeStudy/Android_Abstrac...转载 2017-10-25 12:08:15 · 1835 阅读 · 0 评论 -
addHeaderView()异常 —— setAdapter has already been called
转自: http://blog.youkuaiyun.com/mtt1987/article/details/38535249异常提示:java.lang.IllegalStateException: Cannot add header view to list – setAdapter has already been called.产生原因:addHeaderView()调用在setAdapter()之后转载 2017-10-13 10:51:09 · 430 阅读 · 0 评论 -
一文分析 BottomSheetDialogFragment使用方式及实现原理
分析 BottomSheetDialogFragment 使用方式及实现原理原创 2018-07-10 10:04:47 · 12153 阅读 · 0 评论 -
FaceBook出品的LongArraySet与IntArraySet
代码来自facebook的以下连接地址(鉴于打开要翻墙,所以代码拷贝到这里): https://code.facebook.com/posts/973222319439596对于这两个类的由来,可参考以下文章: http://blog.youkuaiyun.com/xiaxl/article/details/72730795LongArraySetimport android.support.v4.util原创 2017-05-25 16:41:23 · 806 阅读 · 0 评论 -
Android HanziToPinyin.java
Android HanziToPinyin.java参考:汉字 Unicode 编码范围 Unicode字符编码—就这么回事 利用Android源码,轻松实现汉字转拼音功能HanziToPinyin.java来源HanziToPinyin.java来自Android 4.2.2系统源码 Ps:从Android4.3开始,HanziToPinyin不再独立使用使用方式:ArrayList<Han原创 2017-05-22 15:12:49 · 959 阅读 · 0 评论 -
facebook Android平台上动态列表的内存优化(Memory optimization for feeds on Android)
facebook Android平台上动态列表的内存优化(Memory optimization for feeds on Android)英文原文地址Memory optimization for feeds on AndroidMillions of people use Facebook on Android devices every day, scrolling through News翻译 2017-05-25 16:28:50 · 1764 阅读 · 0 评论