3 月,跳不动了?>>> Binder是IPC(进程间通信)方式的一种 为啥要用多进程呢? 每个应用占有单独的进程,虚拟机给每个应用分配的内存的有限的,也就是分配给每个进程的内存是有限的,如果我们把所有功能都放在一个进程中,向下载,加载大图片等很消耗内存,很容易造成主进程的内存耗尽,导致oom,所以可以另起一个进程来处理这些操作,并且在新的进程中,即便这些操作出bug了,也不会影响主进程运行 进程间如何通信的? 首先进程间是不能直接通信的,每个应用也就是进程分为用户空间和内核空间,用户空间之间是隔离的,但是内核空间是相通的,所以我们就可以将数据从用户空间A先传到内核空间,然后从内核空间再把数据传递到用户空间B进行接收,这样就形成了进程间的数据传递,也就是通信了 在binderservice时候,传递的第二个参数ServiceConnection中,asInterface, 这时候会调系统给生产的aidl文件中Proxy 这个Proxy类就是传递数据的,进入这个类里,就会看到我们自己写的aidl中的方法,我这里是addinfo 而通过Proxy中transcat方法将数据传递进binder,在binder中又会调用ontranscat中addinfo ,一调用这个方法这时候就会进入到服务端的stub中,stub是接收数据 一调这个addInfo就会调服务端的 这就形成了通信