首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
关注
综合
后端
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
排行榜
综合
后端
排行榜
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
全部
Android
Kotlin
前端
Java
Android Jetpack
Flutter
面试
架构
性能优化
展开
全部
Android
Kotlin
前端
Java
Android Jetpack
Flutter
面试
架构
性能优化
APP
AI编程
React Native
HarmonyOS
后端
gradle
暂无数据
推荐
最新
Gson → kotlinx.serialization
Gson → kotlinx.serialization 老写法(Java + Gson) 问题在哪里 Gson 基于反射,Kotlin 的 data class 用 Gson 会碰到 null 安全
GreenDAO → Room
GreenDAO → Room 老写法(Java + GreenDAO) 问题在哪里 GreenDAO 依赖自己的一套代码生成器 GreenDAO Generator
ButterKnife → ViewBinding
ButterKnife → ViewBinding 老写法(Java + ButterKnife) 问题在哪里 ButterKnife 已停止维护,作者 Jake Wharton 自己也不建议继续使用
广播接收器 → Flow + Lifecycle
广播接收器 → Flow + Lifecycle 老写法(Java + BroadcastReceiver) 问题在哪里 register/unregister 必须在正确的生命周期成对调用
onActivityResult → ActivityResult API
onActivityResult → ActivityResult API 老写法(Java) 问题在哪里 requestCode 是 int 常量,多个页面间容易重复导致逻辑混淆
EventBus → SharedFlow
EventBus → SharedFlow 老写法(Java + EventBus) 问题在哪里 EventBus 通过反射查找 @Subscribe 注解方法
JNI (Java Native Interface) 技术手册中文参考指南
Java 本地接口 (JNI) 是一种原生编程接口,它允许运行在 Java 虚拟机 (VM) 内部的 Java 代码与用其他语言(如 C、C++ 和汇编)编写的应用程序和库进行交互
单例模式 → object 声明
单例模式 → object 声明 老写法(Java) 新写法(Kotlin) 一句话注意 object 声明的单例是线程安全的——Kotlin 编译器保证初始化在首次访问时执行且只执行一次
Activity 间传值 → Navigation 参数
Activity 间传值 → Navigation 参数 老写法(Java) 问题在哪里 Key 是字符串常量,拼写错误编译期不检查
RxJava2 只看这一篇文章就够了
0. 简介 RxJava 其实就是提供一套异步编程的 API,这套 API 是基于观察者模式的,而且是链式调用的,所以使用 RxJava 编写的代码的逻辑会非常简洁。 其实可以把 RxJava 比喻成一个做果汁,家里有很多种水果(要发送的原始数据),你想榨点水果汁喝一下,这时候…
网络状态监听 → ConnectivityManager + Flow
网络状态监听 → ConnectivityManager + Flow 老写法(Java + BroadcastReceiver) 问题在哪里 NetworkInfo 已废弃(API 29+)
CountDownTimer → Flow
CountDownTimer → Flow 老写法(Java) 问题在哪里 CountDownTimer 不感知生命周期,Activity 退出后 tick 还在跑,回调会操作已销毁的 View 导致
MVC 写法 → MVVM
MVC 写法 → MVVM 老写法(Java — Activity 承担一切) 问题在哪里 Activity 同时负责了 UI 绘制、数据请求、状态切换和业务逻辑,一个类三四百行是常态。测试完全没法做
null 判断 → Kotlin 可空类型
null 判断 → Kotlin 可空类型 老写法(Java) 新写法(Kotlin) 一句话注意 Kotlin 的类型系统在编译期强制区分 String(不可为 null)和 String?
文件读写(Java IO)→ Kotlin 扩展函数
文件读写(Java IO)→ Kotlin 扩展函数 老写法(Java) 问题在哪里 try-catch-finally 嵌套层层叠叠,实际有用的就两行读写代码,其余全是样板
getter/setter → Kotlin 属性
getter/setter → Kotlin 属性 老写法(Java) 新写法(Kotlin) 一句话注意 Kotlin 里声明 var 自动生成 getter/setter
为什么 Java 的数组需要 new 出来
Java 中的数组为什么一定要 new 出来?更深一点说,为什么 Java 的数组通常要在堆上申请?
SQLite 手动升级 → Room Migration
SQLite 手动升级 → Room Migration 老写法(Java + SQLiteOpenHelper) 问题在哪里 版本号和 SQL 全靠自己维护
裸辞-疫情-闭关-复习-大厂offer(一)
这不是一篇面经,而是一篇面试的复习稿。分享了我对面试的思考,破釜沉舟裸辞及潜心闭关复习面试的心路历程。
线程安全集合 → 协程安全替代
线程安全集合 → 协程安全替代 老写法(Java) 问题在哪里 Collections.synchronizedList 只保护单个方法调用,遍历时仍需要手动 synchronized 块