老师您好,请教一个问题:为什么普通动态广播在ams是并行分发的,在应用端串行分发?
来源:5-4 说说动态广播的注册和收发原理
__BlacKey__
2019-07-04
既然要在应用端串行分发,为什么ams不直接串行分发呢?
为什么应用端要串行分发,而不是并行分发呢?
写回答
1回答
-
您好,串行分发意味着必须等前面的广播分发完毕之后再分发下一个广播,这可能阻塞系统服务。
分发广播的binder调用是oneway的,所以对于AMS来说能立即返回,而对于应用端来说是串行的,必须等上一个处理完,binder驱动才会给下一个请求转发给应用。
另外,广播分发是走ApplicationThread的,不是直接通过ReceiverDispatcher,是因为从系统设计的角度,希望所有AMS向应用端发起的binder调用都串行化处理。
012019-07-07
相似问题