Skip to content
阅读进度

如何理解同步 Binder 与 oneway? ​

返回 Framework 与系统服务 目录

标准回答 ​

同步调用的客户端等待返回;远程oneway提交后不等待业务返回,服务端仍需排队和执行。对于同一Binder对象的oneway事务,存在串行处理约束,因此不能把它当成每个请求开新线程。

oneway不能让服务端慢任务消失,队列和事务资源仍有限,还要考虑过载、顺序、丢失或死亡后的业务恢复。调用方不等待结果也不代表业务已经成功完成,必要时用明确的确认协议。

本地同进程调用可能直接进入实现,不一定遵循远程代理的线程切换假设。接口设计要同时核查部署方式。

追问与回答 ​

把所有AIDL方法改成oneway能治ANR吗 ​

不能。UI可能还等结果,服务端可能更拥堵;有同步语义的方法需要重新设计状态交付,而不是只改关键字。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。