外观
Java 与并发
对象、集合、线程、锁、Handler 与调度。
本领域共 69 条问答。先读与你当前场景相关的主题,再用全文搜索查找具体问题。
内存管理与性能优化
多线程与异步编程
- 请描述 Android 主线程的消息循环机制是如何工作的?
- 为什么不能在子线程中直接更新 UI?Handler 是如何解决这个问题的?
- 如何创建一个具有独立 Looper 的子线程?它的典型应用场景是什么?
- launch 和 async 的区别是什么?何时应该使用其中一个?
- 如何在协程中优雅地处理网络请求失败并进行重试?
- Observable、Flowable 和 Single 在 RxJava 中的区别及适用场景?
- 如何使用 debounce 和 throttleFirst 操作符优化搜索框的输入事件?
- RxJava 中的背压(Backpressure)问题是什么?如何解决?
- 为什么 AsyncTask 在 Android 11 中被标记为废弃?替代方案有哪些?
- 如何设计一个适合 Android 应用的线程池配置策略?
- Executors.newFixedThreadPool(5) 在 Android 中可能带来什么风险?
- WorkManager 如何保证任务在设备重启后仍能执行?
- PeriodicWorkRequest 与 OneTimeWorkRequest 的最大时间间隔限制是多少?
- 如何在 WorkManager 中实现任务依赖(Chain)和取消特定任务?
- 在输入或系统服务回调中执行耗时操作,会有什么后果?
数据持久化与本地存储
网络通信与 HTTP 协议
组件通信与依赖注入
混合开发与 WebView 交互
Java 与网络基础 · 岗位补充
- ArrayList、HashMap、HashSet,在客户端中怎么选?
- Java 泛型能防什么错?为什么 List<子类> 不是 List<父类>?
- volatile、synchronized 和 Atomic,分别解决什么问题?
Android 工程与测试 · 岗位补充
Android 核心
Java 与并发
- 线程池怎么配置与拒绝任务?
- ArrayList、HashMap、ConcurrentHashMap 怎么选?
- volatile、synchronized、原子类有什么区别?
- 死锁、竞态与线程安全怎样处理?
- 接口、继承和多态怎样让实现可替换?
- LRU、Top K 和任务依赖,怎样用数据结构解决?
- Java 怎样安排 Agent 并发任务,防止堵塞和结果错序?
架构与工程
启动链路与初始化
Framework Binder 与 ANR
内存 ART 与泄漏
Java 并发与实现
- 如何理解volatile、synchronized 与原子类?
- 如何理解初始化结果的安全发布?
- 如何理解线程池排队与容量限制?
- 如何理解死锁、锁顺序与竞争?
- 如何理解Future 取消与协作终止?
- 如何理解LRU 缓存的 Java 实现?
语言与组件基础
- 如何理解equals、hashCode 与 HashMap?
- 如何理解ConcurrentHashMap 与复合操作?
- 如何理解Handler、Looper 与消息队列?
- Kotlin 协程与 Java 并发如何对应?
命令 SQL 与 Java 实操
Binder 安全与并发
- 跨进程调用为什么容易死锁 怎样避免?
- synchronized 可以用在哪里 实例锁和类锁怎么区分?
- volatile AtomicInteger 和 synchronized 分别适合什么场景?
- CPU 和 IO 线程池如何配置 拒绝策略如何选择?