首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Android 开发文章合集
开发者如是说
创建于2021-05-12
订阅专栏
Android 相关的文章
等 24 人订阅
共45篇文章
创建于2021-05-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
RxJava 响应式编程 | 一篇文章看懂 RxJava 的实现原理
在之前的文章中我们介绍了 RxJava 2 的常用的 API 的方法总结、背压的概念以及 RxJava 2 在项目中的实际应用。在本节中,我们将要对 RxJava 2 的源码进行分析。下面是之前文章的一些链接,如果对 RxJava 2 的使用比较感兴趣,你可以通过下面的文章进行…
Android 高级面试-4:虚拟机相关
标记-清除算法:这种算法直接在内存中把需要回收的对象“抠”出来。效率不高,清除之后会产生内容碎片,造成内存不连续,当分配较大内存对象时可能会因内存不足而触发垃圾收集动作。 标记-整理算法:类似于标记-清除算法,只是回收了之后,它要对内存空间进行整理,以使得剩余的对象占用连续的存…
Android 高级面试-3:Java、同步和并发相关
LruCache 用来实现基于内存的缓存,LRU 就是最近最少使用的意思,LruCache 基于 LinkedHashMap 实现。LinkedHashMap 是在 HashMap 的基础之上进行了封装,除了具有哈希功能,还将数据插入到双向链表中维护。每次读取的数据会被移动到链…
Android 高级面试-2:IPC 相关
IPC 就是指跨进程通信。IPC 相关的内容,涉及的主要有: IPC 就是指进程之间的通信机制,在 Android 系统中启动 Activity/Service 等都涉及跨进程调用的过程。 Bundle,用于在四大组件之间传递信息,优点是使用简单,缺点是只能使用它支持的数据类型…
Android 高级面试-1:Handler 相关
MQ 的 next() 方法,enqueueMessage() 方法,因为它们与 Native 层的 Looper 和 MQ 关联。 Handler 机制中有 4 个主要的对象:Handler、Message、MessageQueue 和 Looper. Handler 负责消…
Android 跨进程通信机制 Binder 的实现原理
Binder 是 Android 系统中非常重要的组成部分。Android 系统中的许多功能建立在 Binder 机制之上。在这篇文章中,我们会对 Android 中的 Binder 在系统架构中的作用进行分析;然后,我们会从底层的实现角度简要说明为什么 Android 要开发…
Android 系统启动过程源码分析
现在我们来梳理下 Android 系统的启动过程。Android 启动过程还是比较重要的,因为在这个过程中除了要完成 Linux 系统的初始化工作还要完成 Android 的基础服务和启动界面的初始化工作。 在这篇文章中,我们不打算过多深入源码。因为 Android 中任何一个…
揭开 LiveData 的通知机制的神秘面纱
LiveData 和 ViewModel 是 Google 官方的 MVVM 架构的一个组成部分。巧了,昨天分析了一个问题是 ViewModel 的生命周期导致的。今天又遇到了一个问题是 LiveData 通知导致的。而 ViewModel 的生命周期和 LiveData 的通…
揭开 ViewModel 的生命周期控制的神秘面纱
想必有过一定开发经验的同学对 ViewModel 都不会陌生,它是 Google 推出的 MVVM 架构模式的一部分。这里它的基础使用我们就不介绍了,毕竟这种类型的文章也遍地都是。今天我们着重来探讨一下它的生命周期。 起因是这样的,昨天在修复程序中的 Bug 的时候遇到了一个异…
Glide 系列-3:Glide 缓存的实现原理(4.8.0)
首先,我们可以在自定义的 GlideModule 中制定详细的缓存策略。即在 applyOptions() 中通过直接调用 GlideBuilder 的方法来指定缓存的信息: 以上是两个比较常用的缓存的配置方式,具体的 API 可以查看相关的源码了解. 不论 Glide 还是其…
Glide 系列-2:主流程源码分析(4.8.0)
Glide 是 Android 端比较常用的图片加载框架,这里我们就不再介绍它的基础的使用方式。你可以通过查看其官方文档学习其基础使用。这里,我们给出一个 Glide 的最基本的使用示例,并以此来研究这个整个过程发生了什么: 上面的代码虽然简单,但是整个执行过程涉及许多类,其流…
Glide 系列-1:预热、Glide 的常用配置方式及其原理
在接下来的几篇文章中,我们会对 Android 中常用的图片加载框架 Glide 进行分析。在本篇文章中,我们先通过介绍 Glide 的几种常用的配置方式来了解 Glide 的部分源码。后续的文中,我们会对 Glide 的源码进行更详尽的分析。 对于 Glide,相信多数 An…
内存缓存框架 LruCache 的实现原理
LruCache 是 Android 提供的一种基于内存的缓存框架。LRU 是 Least Recently Used 的缩写,即最近最少使用。当一块内存最近很少使用的时候就会被从缓存中移除。在这篇文章中,我们会先简单介绍 LruCache 的使用,然后我们会对它的源码进行分析…
Android 线程间通信机制 Handler 的实现原理
在这篇文章中,我们将会讨论 Android 的消息机制。提到 Handler,有过一些 Android 开发经验的都应该很清楚它的作用,通常我们使用它来通知主线程更新 UI。但是 Handler 需要底层的 MessageQueue 和 Looper 来支持才能运作。这篇文章中…
Android 网络框架 Retrofit 源码解析
在之前的文章 《Andriod 网络框架 OkHttp 源码解析》 中我们分析了 OkHttp 的源代码。现在我们就来分析一下 OkHttp 的兄弟框架 Retrofit。关于 Retrofit 的注解的使用,可以参考其官方文档:https://square.github.io…
Andriod 网络框架 OkHttp 源码解析
OkHttp 是 Square 的一款应用于 Android 和 Java 的 Http 和 Http/2 客户端。使用的时候只需要在 Gradle 里面加入下面一行依赖即可引入: 我们知道,Http 请求有多种类型,常用的分为 Get 和 Post,而 POST 又分为 Fo…
Android 的 View 工作流程详解
当我们调用 startActivity() 方法的时候,会调用到 ActivityThread 中的 performLaunchActivity() 获取一个 Activity 实例, 并在 Instrumentation 的 callActivityOnCreate() 方法…
细说 Android 控件体系
下面是 Android 中的 View 坐标系的基本图。要获得一个 View 的位置,我们可以借助两个对象,一个是 View ,一个是 MotionEvent。以下是它们的一些方法的位置的含义: mBottom:指定控件的下边缘距离其父控件上边缘的位置,单位:像素。 另外,就是…
Android 动画体系详解
View 动画:也叫视图动画或者补间动画,主要是指 android.view.animation 包下面的一些类,只能被用来设置给 View,缺点是比如当控件移动之后,接收点击的控件的位置不会跟随移动,并且能够实现的效果只有移动、缩放、旋转和淡入淡出操作四种及其组合。 Draw…
Java 进阶 | 注解及其在 Android 中的应用
一般的,注解在 Android 中有两种应用方式,一种方式是基于反射的,即在程序的运行期间获取类信息进行反射调用;另一种是使用注解处理,在编译期间生成许多代码,然后在运行期间通过调用这些代码来实现目标功能。 在本篇文章中,我们会先重温一下 Java 的注解相关的知识,然后分别介…
下一页