外观
如何理解同步 Binder 与 oneway?
标准回答
同步调用的客户端等待返回;远程oneway提交后不等待业务返回,服务端仍需排队和执行。对于同一Binder对象的oneway事务,存在串行处理约束,因此不能把它当成每个请求开新线程。
oneway不能让服务端慢任务消失,队列和事务资源仍有限,还要考虑过载、顺序、丢失或死亡后的业务恢复。调用方不等待结果也不代表业务已经成功完成,必要时用明确的确认协议。
本地同进程调用可能直接进入实现,不一定遵循远程代理的线程切换假设。接口设计要同时核查部署方式。
追问与回答
把所有AIDL方法改成oneway能治ANR吗
不能。UI可能还等结果,服务端可能更拥堵;有同步语义的方法需要重新设计状态交付,而不是只改关键字。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q046