Kotlin之@JvmOverloads、@JvmStatic、@JvmField、@JvmInline等注解使用总结
写在前面
Kotlin代码可以经过编译器转换成VM虚拟机能识别的字节码,所以Java与...
Kotlin 进阶 | 不变型、协变、逆变子类型泛型中的子类型不变型协变逆变PECS 原则 & POCI 原则类型投影推荐阅读
引入泛型之后,子类型的概念变得复杂,好不容易用刚学会的泛型定义了方法,用起...
如何将您的应用连接到 Wi-Fi 设备?
随着物联网的发展,将 Android 应用连接到启用 Wi-Fi 的设备越来越普遍。无论您要...
Gradle 编写及整个构建详解
本文不会太具体讲编写Gradle插件中用到的API,只是大致梳理一下如何编写一个Gr...
从架构到源码:一文了解Flutter渲染机制
跨平台技术由于其一码多端的生产力提升而表现出巨大的生命力,从早期的Hybrid App...
【Android 启动过程】Android 应用启动流程 | Activity 启动流程
文章目录
一、Android 系统启动流程
二、Activity 启动流程
一、Android ...
JNI 编程上手指南之 HelloWorld 实战
JNI 编程是高级/专家 Android 开发的必备技能之一,接下来我们就一步一步掌握 JNI...
Guava 源码分析(Cache 原理)
前言
Google 出的 Guava 是 Java 核心增强的库,应用非常广泛。
我平时用的也...
Android设计模式源码解析之Builder模式
1. 模式介绍
模式的定义
将一个复杂对象的构建与它的表示分离,使得同样的...
Kotlin 中定义类、field关键字,主构造函数和次构造函数详解
1、定义类与field关键字,以及计算属性,和防范竞态条件
class Student {
...
Android Studio插件
ButterKnife Zelezny:简化视图绑定
ButterKnife Zelezny 插件自动执行了为 ...
应用测速组件
统计应用冷启动时长、页面渲染时长是APM系统不可缺少一个功能。Rabbit中这个功能...
Android底层崩溃捕获机制
我们知道Java中的Crash我们一般可以通过try/catch进行捕获并获取具体的崩溃信息,...
Kotlin 中的 Lambda 与 Inline
在Kotlin中,有很多很酷很实用的特性,比如Lambda和高阶函数,利用这些特性,...
Android理解ANR
1、 前言
在上一篇文章《Android性能优化(六)之卡顿那些事》中,我们提到了卡...
Flutter安装配置
Mac 配置Flutter环境
kotlin泛型
泛型使用方法
在类上使用泛型
类上面使用泛型,需要把泛型声明在类名后...
Android性能优化建议
磁盘
SharedPreferences
我们知道SharedPreferences底层是使用xml文件来实...
微信为什么使用 SQLite 保存聊天记录?
SQLite 是一个被大家低估的数据库,但有些人认为它是一个不适合生产环境使用的玩具...

