Kotlin 进阶 | 不变型、协变、逆变子类型泛型中的子类型不变型协变逆变PECS 原则 & POCI 原则类型投影推荐阅读
引入泛型之后,子类型的概念变得复杂,好不容易用刚学会的泛型定义了方法,用起...
android后端服务器架构搭建指南
android后端服务器搭建
卓越工程之如何做好Code Review
阿里妹导读
本文主要从我们为什么需要CR?CR面...
android java和kotlin语法对比
java和kotlin语法对比
android协程是怎么切换线程的
要搞清楚这个问题,我觉得需要搞懂这几个知识点:
Continuation,简单讲可以...
JDK Timer 实现原理分析
说明
本文分析的是 JDK 7
Timer 基本用法
public static void main(String[] a...
Android设计模式源码解析之外观模式(Facade)
1. 模式介绍
模式的定义
外观模式(也成为门面模式)要求一个子系统的外部与...
Android组件化架构 – 4. 动态创建 & 反射机制
Android 组件化中使用动态创建的作用是解耦;
1. 反射机制
反射有两个作用:1.反编...
Android计算图片占用内存大小
前言
对于一张图片,你知道应该存放在那个资源目录下面吗,或者说,放在那个资...
Kotlin中空安全操作符,异常处理和自定义异常,以及先决条件函数详解
一、Kotlin的可空性
null 在java中我们司空见惯的空指针异常NullPointerExcep...
ConcurrentHashMap原理分析
背景
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代...
免费的 Android 专家在线课程,带您逐步开发出自己的应用。
免费的 Android 专家在线课程
Jetpack Compose也能搞插件化了
/ 前言 /
在传统的 Android 开发模式中,由于界面过分依赖于 Activity、Fra...
Base64编码原理分析
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码...
PendingIntent使用解析
PendingIntent 中的单词 “pending” 指延迟或挂起,就是指它是延迟的或挂起的。一句...
Kotlin 互斥体:5 个用例
1. 保护多线程应用程序中的共享数据
设想:
在多线程应用程序中,多个线程...
JNI 编程上手指南之 JNI 调用性能优化
为什么要做性能优化
Java 程序中,调用一个 Native 方法相比调用一个 Java 方...
Flutter编译报错Context: This is the overridden method ('load')
Flutter编译报错:The method 'CachedNetworkImageProvider.load' has fewer positional