首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Android面试锦集
AntDream
创建于2024-05-07
订阅专栏
Android面试的方方面面
等 160 人订阅
共198篇文章
创建于2024-05-07
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Android 设计模式之代理模式
在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得得心应手呢?和我一起跟着《Android源码设计模式解析与实战》一书边学边应用吧!设计
Android 设计模式之装饰模式
抽象装饰者:为了装饰我们的组件对象,其内部一定要有一个指向组件对象的引用。在大多数情况下,该类为抽象类,需要根据不同的装饰逻辑实现不同的子类。如果装饰逻辑单一,只有一个的情况下我们可以省略该类直接作为具体的装饰者 从上面我们对代理模式中的示例代码进行改造的过程我们可以看出,装饰…
Retrofit2源码解析——网络调用流程(上)
总结起来就是三步:通过create方法生成我们的接口对象、调用接口得到Call、调用Call发起网络请求。我们分别来看看这三步Retrofit2都干了些啥。 可以看到Retrofit的create方法返回的是一个动态代理对象,当我们调用通过create方法生成的接口对象mySe…
LinkedHashMap源码解析
LinkedHashMap实际只是在HashMap的基础上加上了一个双向链表来保存节点插入的顺序,因此很多的逻辑都和HashMap是一样的。比如插入节点时,LinkedHashMap相比HashMap只需要在HashMap的基础上将节点插入双向链表,以及根据排序要求更新节点的顺…
OkHttp3源码解析(一)之请求流程
以上是简略的用OkHttp3请求网络的步骤,下面我们来通过源码分析下。 可以看见返回的RealCall,所以我们发起请求无论是调用execute方法还是enqueue方法,实际上调用的都是RealCall内部的方法。 在RealCall内部的enqueue方法和execute方…
Retrofit2源码解析——网络调用流程(下)
上次我们分析到网络请求是通过OkHttpCall类来完成的,下面我们就来分析下OkHttpCall类。 OkHttpCall的enqueue方法主要干了2件事,一个是创建OkHttp3的Call用于执行网络请求;另一个是解析返回的结果并回调。下面我们来看看创建OkHttp3的C…
深入理解Java虚拟机(三)之垃圾收集
将内存按容量分为大小相等的2块,每次只使用其中的一块。当这一块内存用完了,就将存活的对象复制到另一块内存中,然后一次性清理掉已使用过的内存空间。 现在的商业虚拟机一般都采用这种复制算法回收新生代,但不是严格按照1:1这样划分内存。而是分为较大的一块Eden空间和2块较小的Sur…
Android 设计模式之Builder模式
在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得得心应手呢?和我一起跟着《Android源码设计模式解析与实战》一书边学边应用吧!设计
Andorid多线程之DelayQueue源码分析
阻塞队列系列Android多线程之ArrayBlockingQueue源码解析Android多线程之LinkedBlockingQueue源码解析Android多线程之SynchronousQueue
深入理解Java虚拟机(一)之内存布局和对象的创建
内存分配完成以后,接着虚拟机会将分配的内存空间的初始化为零值(不包括对象头),如果使用TLAB,这一过程也可以提前至TLAB分配时进行。这一步可以保证在Java代码中可以不赋初值就可以直接使用 另一部分是类型指针,指向类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实…
深入理解Java虚拟机(二)之四种引用和2次标记
如果对象在进行可达性分析后发现不可达,就会被第一次标记并进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法 。当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟机将这2种情况都视为“没有必要执行” 如果对象被判定为有…
Android 单例模式的正确姿势
单例模式是使用得最多的设计模式,模版代码也很多。但是如果使用不当还是容易出问题。 实际上,上述方法在多线程的环境下,还是会有可能创建多个实例。为什么呢? 在多线程环境下,每个线程的私有内存空间中都有mSingleton的副本。这导致可能存在下面的情况: 这样的话就有可能创建多个…
Android自定义View注意事项
主要用于实线不规则的效果,即这种效果不方便通过布局的组合方式来实现。相当于就是得自己“画”了。采用这种方式需要自己支持wrap_content,padding也需要自己处理 主要用于实现自定义的布局,看起来很像几种View组合在一起的时候,可以使用这种方式。这种方式需要合适地处…
Android多线程之LinkedBlockingQueue源码解析
LinkedBlockingQueue是一个基于链表的队列,并且是一个先进先出的队列。 LinkedBlockingQueue内部对入队和出队操作采用了不同的锁,这样入队和出队操作可以并发进行。但同时只能有一个线程可以进行入队或出队操作。
Android内存优化之内存泄漏
单例的情况主要是因为单例的生命周期比较长,如果引用的一些资源(比如Context、图片等)没有做特殊处理,就容易导致内存泄漏。具体的分析可以查看文章:Android 单例模式的正确姿势 静态变量的生命周期同样很长,如果引用了一些资源没有及时释放的话就会导致内存泄漏,比如Cont…
Android自定义View之手把手带你自定义一个进度条
这次碰到一个简单的需求,就是如上图的加载进度条。分析总结后就几条: 分析完需求,那我们就来想想怎么实现这个特殊的View。 首先我们肯定先需要掌握基本的View的绘制,比如画笔Paint、画布Canvas,以及View的绘制原理等。 自定义View,其实可以这样简单来理解:假设…
Android 面试之Kotlin 协程上下文和异常处理
上下文是什么 CoroutineContext是一组用于定义协程行为的元素,包括以下几部分: Job:控制协程的生命周期 CoroutineDispatcher:向合适的线程分发任务 Coroutin
Android面试题之Kotlin协程一文搞定
定义 协程基于线程,是轻量级的线程 作用 处理耗时任务,这种任务常常会阻塞主线程 保证主线程安全,即确保安全地从主线程调用任何suspend函数 特点 让异步逻辑同步化