外观
多线程与异步编程
- 请描述 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)和取消特定任务?
- 在输入或系统服务回调中执行耗时操作,会有什么后果?