高频考点:
1. Looper.loop()为何不会阻塞主线程?
// MessageQueue.next()
nativePollOnce(ptr, nextPollTimeoutMillis);
// Native层通过epoll监听文件描述符事件
核心三问:
2. AIDL生成的Java类工作原理:
// Book.aidl自动生成的方法
public void readFromParcel(Parcel parcel) {
this.name = parcel.readString();
}
深度原理:
2. LiveData防内存泄漏原理:
// LifecycleBoundObserver.onStateChanged()
if (state == DESTROYED) {
removeObserver(mObserver);
}
必考知识点:
2. 挂起函数状态机实现:
// 编译后的挂起函数
label = when (this.label) {
0 -> { /* 初始状态处理 */ }
1 -> { /* 恢复点处理 */ }
}
进阶技巧:
高频考点:
2. 线程模型陷阱:
// 在子线程执行耗时操作
new Handler(Looper.getMainLooper()).post(() -> {
result.success(data);
});