首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Android
白瑞德
创建于2021-09-16
订阅专栏
Android源码和新技术学习
等 10 人订阅
共24篇文章
创建于2021-09-16
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Android Gradle 构建指令生成规则
Android 构建工具生成的 Gradle 构建任务遵循特定的命名规则,它们由 buildTypes 和 productFlavors 的组合决定 1. 构建任务的命名规则 1.1 基本规则 构建任
ViewModel的创建、销毁和恢复
ViewModel的创建、销毁和恢复流程和机制。屏幕旋转时为什么ViewModel不会被销毁和数据恢复原理
Kotlin flow 的创建原理和流程
Kotlin flow的创建原理。flow为什么是冷的。多次订阅flow会如何。Kotlin flow多次collect的结果
Android Activity生命周期的流转过程
Activity生命周期。ActivityThread和Activity的生命周期。AMS对Activity生命周期的管理和关系
Android Activity的创建流程(Android-10)
Activty启动流程;Activity的创建过程;Android如何创建Activity。Activity创建过程源码分析
Android系统启动过程要点(基于Android 10)
Android启动流程;Zygote进程启动过程;SystemServer启动流程;Launcher启动流程
Android里的多进程和跨进程通讯方式
IPC简介 进程间通信(InterProcess Communication缩写IPC)是指在不同进程之间传播或交换信息。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动
Android ViewModel源码浅析
ViewModel的基本使用;ViewModel源码分析;带参数的ViewModel创建方法;ViewModel构造参数;ViewModel生命周期;ViewModel和Activity的绑定
Flutter自定义绘制基础
简介 通过绘制基本的线、路径、图形、曲线等。同时结合画布的旋转实现一个模拟时钟的组件。学习Flutter的基本绘制。
一文掌握Android Handler消息机制核心代码
深度分析Handler消息机制的核心源码,了解Handler的运行机制和原理。掌握Handler的关键知识点
HashMap源码要点解析
HashMap在底层数据结构上采用了数组+链表+红黑树,通过散列映射来存储键值对数据。 HashMap在初始化时并没有确定数组长度,实际上长度是在扩容在初始化的,在插入元素时,如果发现table为空或者达到了最大容量,就会进行扩容(初始化)而就是在这初始化时,会用到用户传入的数…
学习笔记——ThreadLocal要点总结
只负责创建对象,没有过多的操作。 每一个Thread都会持有一个ThreadLocalMap,它使用和HashMap相同的数据结构存储数据,使用ThreadLocal作为Key值。 首先根据当前线程获取ThreadLocalMap,然后取出key值为当前ThreadLocal的…
学习笔记——Retrofit要点总结
动态代理实现网络请求(注解)的解析和封装(ServiceMethod,其子类HttpServiceMethod具体实现,不同版本存在调用adapt的差异),第一次解析之后,就会通过一个list将这些内容缓存起来。create方法 使用addCallAdapterFactory自…
Android常见内存泄露和解决办法
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。用完没有释放,造成可用内存越来越少。这里就不得不提一下Java GC机制和Java四种引用方式 不幸的告诉你,这段代码已经造成了内存泄露。 首先需要知道的是:非静态内部类默认持有外部类的引用message send出去…
Java基础:内部类
InnerClass就是一个内部类,它就像外部类OutClass的一个成员,可以无限制的访问外部类的成员变量和方法。 不过需要注意的是,当当成员内部类拥有和外部类同名的成员变量或者方法时(例如代码中的name),当通过内部类访问该变量时默认情况下访问的是成员内部类的成员。如果需…
Android基础:Activity的生命周期和启动模式
打开新的Activity或者返回桌面:onPause->onStop。如果打开新的Activity为透明主题,则不会调用onStop; 。由于是在异常情况下终止的,所以系统会调用onSaveInstanceState保存当前Activity状态。onSaveInstanceSt…
RxJava自定义操作符
RxJava不仅提供了大量的操作,例如map、flatMap(相关博客),还支持自定义操作符。 如果操作符是用于Observable发射的单独的数据项,则使用序列化操作符ObservableOperator。 如果你的操作符是用于变换Observable发射的整个数据序列,则使…
从源码查看RxJava中的map和flatMap的用法与区别
RxJava中提供了大量的操作符,这大大提高了了我们的开发效率。其中最基本的两个变换操作符就是map和flatMap。而其他变换操作符的原理基本与map类似。 map对Observable发射的每一项数据应用一个函数,执行变换操作。对原始的Observable发射的每一项数据应…
invalidate、postInvalidate与requestLayout浅析
我们可以直接在view里使用invalidate()刷新页面,其内部实际是调用invalidate(true)。其方法调用为: skipInvalidate:确认该View是否需要跳过绘制,需要跳过绘制的条件包括:View不是可见的,存在动画对象,父视图不是ViewGroup或…
Kotlin中集合区间的确定——in、until、downTo......
通过下标来获取和设置元素是处理集合最常见的操作之一,这篇文章就来学习一下kotlin中集合区间的确定。 在kotlin中,下标运算是一个约定:使用下标运算符读取元素会被换位get,写入则为set。 kotlin中的in运算符用来检查某个对象是否属于集合。其中..用来创建一个区间…
下一页