首页
沸点
课程
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
关注
综合
后端
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
排行榜
综合
后端
排行榜
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
全部
Android
Kotlin
前端
Java
Flutter
Android Jetpack
架构
HarmonyOS
性能优化
展开
全部
Android
Kotlin
前端
Java
Flutter
Android Jetpack
架构
HarmonyOS
性能优化
人工智能
AI编程
面试
APP
iOS
音视频开发
暂无数据
推荐
最新
synchronized → Coroutines
synchronized → Coroutines 老写法(Java — synchronized 死锁) 问题在哪里 多个 synchronized 嵌套且获取锁的顺序不一致时,两个线程互相等待对方
NullPointerException → Kotlin 空安全
NullPointerException → Kotlin 空安全 老写法(Java — NPE 高发代码) 问题在哪里 Java 的类型系统不区分"可以为 null"和"不能为 null"
kapt 替换为 KSP
构建速度优化 老项目常见慢构建原因 老项目构建慢通常卡在这几个地方,按效果从大到小排列: 优化项 效果 操作 Gradle 版本升级 显著 升级到 Gradle 8.x + AGP 8.x 开启并行构
Android 写本地日志工具类
Android 写本地日志工具类,项目中应该会比较常用,在此记录一下 使用前在 Application 里初始化一下
Gradle 写法 → Kotlin DSL
老式 Gradle 写法 → Kotlin DSL 老写法(Groovy — build.gradle) 问题在哪里 Groovy 是动态语言,IDE 补全和语法检查都很弱
libs 目录 → Gradle 依赖管理
libs 目录 → Gradle 依赖管理 老写法(Java — 手动放 jar/aar) 问题在哪里 jar 文件放在 libs 目录里,没有版本可追溯性。团队协作时不知道这个 jar 是哪来的
RxJava2 只看这一篇文章就够了
0. 简介 RxJava 其实就是提供一套异步编程的 API,这套 API 是基于观察者模式的,而且是链式调用的,所以使用 RxJava 编写的代码的逻辑会非常简洁。 其实可以把 RxJava 比喻成一个做果汁,家里有很多种水果(要发送的原始数据),你想榨点水果汁喝一下,这时候…
依赖管理 → Version Catalog
依赖管理 → Version Catalog 老写法(Groovy — 散落各处的版本号) 问题在哪里 版本号散落在每个 module 的 build.gradle 里,同一个库两个 module
Gson → kotlinx.serialization
Gson → kotlinx.serialization 老写法(Java + Gson) 问题在哪里 Gson 基于反射,Kotlin 的 data class 用 Gson 会碰到 null 安全
ProGuard → R8
ProGuard → R8 老写法(Groovy — ProGuard) 手动维护 proguard-rules.pro: 问题在哪里 ProGuard 是第三方工具,被 R8 替代
JNI (Java Native Interface) 技术手册中文参考指南
Java 本地接口 (JNI) 是一种原生编程接口,它允许运行在 Java 虚拟机 (VM) 内部的 Java 代码与用其他语言(如 C、C++ 和汇编)编写的应用程序和库进行交互
广播接收器 → Flow + Lifecycle
广播接收器 → Flow + Lifecycle 老写法(Java + BroadcastReceiver) 问题在哪里 register/unregister 必须在正确的生命周期成对调用
GreenDAO → Room
GreenDAO → Room 老写法(Java + GreenDAO) 问题在哪里 GreenDAO 依赖自己的一套代码生成器 GreenDAO Generator
EventBus → SharedFlow
EventBus → SharedFlow 老写法(Java + EventBus) 问题在哪里 EventBus 通过反射查找 @Subscribe 注解方法
ButterKnife → ViewBinding
ButterKnife → ViewBinding 老写法(Java + ButterKnife) 问题在哪里 ButterKnife 已停止维护,作者 Jake Wharton 自己也不建议继续使用
裸辞-疫情-闭关-复习-大厂offer(一)
这不是一篇面经,而是一篇面试的复习稿。分享了我对面试的思考,破釜沉舟裸辞及潜心闭关复习面试的心路历程。
CountDownTimer → Flow
CountDownTimer → Flow 老写法(Java) 问题在哪里 CountDownTimer 不感知生命周期,Activity 退出后 tick 还在跑,回调会操作已销毁的 View 导致
onActivityResult → ActivityResult API
onActivityResult → ActivityResult API 老写法(Java) 问题在哪里 requestCode 是 int 常量,多个页面间容易重复导致逻辑混淆
【Android】给App添加启动画面——SplashScreen
Android 12 引入 SplashScreen API,通过设置主题和动画控制启动画面显示,可以改善应用启动体验。
为什么 Java 的数组需要 new 出来
Java 中的数组为什么一定要 new 出来?更深一点说,为什么 Java 的数组通常要在堆上申请?