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
插件Service的运行管理
Service启动的大体流程
我们从ContextImpl.startService()开始看。 为什么从这...
ReentrantLock原理分析
ReentrantLock是Java并发包中提供的一个可重入的互斥锁,它拥有与synchronized...
算法 – 动态规划
很多人觉得动态规划很难,甚至认为面试出动态规划题目是在为难候选人,这可能产生...
深入理解JVM垃圾收集机制
程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的...
Android 面试之必问Android基础
1,Activity
1.1 生命周期
正常情况系,Activity会经历如下几个阶段:
onCrea...
Kotlin内联函数inline、noinline、crossinline
高阶函数
首先来看下kotlin里的高阶函数定义:如果一个函数接收另一个函数作为...