Android Binder服务端被调用,一定是运行在Binder线程中吗?

不一定。

如果是跨进程调用,即Binder的代理(proxy)端 和 Binder的服务(Server)端 是不同的进程,

则Binder服务端方法执行是在Binder线程中的,

比如:打印线程名,Thread.currentThread().toString() 为:

Thread[Binder:19118_3,5,main]

但如果,Binder的代理(proxy)端 和 Binder的服务(Server)端 是在同一个进程,

则Binder服务端方法执行的线程 跟 Binder代理端执行的线程,是同一个线程。

为什么?

因为在同一个进程中的时候,就在通过底层Binder传输了,而是就相当于是方法级别的调用了,直接调用到了Binder的onTransact方法中了。

你可能感兴趣的:(android,Android,Binder,线程)