From b8d734f19ae3ff9a2fd572ccb2a805e3216967af Mon Sep 17 00:00:00 2001 From: hippyk Date: Tue, 26 Dec 2017 16:57:02 +0800 Subject: [PATCH] =?UTF-8?q?Update=2014=20activity=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=B5=81=E7=A8=8B.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除错误表述 --- ...activity\345\220\257\345\212\250\346\265\201\347\250\213.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/14 activity\345\220\257\345\212\250\346\265\201\347\250\213.md" "b/14 activity\345\220\257\345\212\250\346\265\201\347\250\213.md" index 74989e1..cf41b21 100644 --- "a/14 activity\345\220\257\345\212\250\346\265\201\347\250\213.md" +++ "b/14 activity\345\220\257\345\212\250\346\265\201\347\250\213.md" @@ -236,7 +236,7 @@ static public IActivityManager asInterface(IBinder obj) { 好吧,最后直接返回一个ActivityManagerProxy对象,而ActivityManagerProxy继承与IActivityManager,到了这里就引出了我们android系统中很重要的一个概念:Binder机制。我们知道应用进程与SystemServer进程属于两个不同的进程,进程之间需要通讯,android系统采取了自身设计的Binder机制,这里的ActivityManagerProxy和ActivityManagerNative都是继承与IActivityManager的而SystemServer进程中的ActivityManagerService对象则继承与ActivityManagerNative。简单的表示: Binder接口 --> ActivityManagerNative/ActivityManagerProxy --> ActivityManagerService; -这样,ActivityManagerNative与ActivityManagerProxy相当于一个Binder的客户端而ActivityManagerService相当于Binder的服务端,这样当ActivityManagerNative调用接口方法的时候底层通过Binder driver就会将请求数据与请求传递给server端,并在server端执行具体的接口逻辑。需要注意的是Binder机制是单向的,是异步的,也就是说只能通过client端向server端传递数据与请求而不同等待服务端的返回,也无法返回,那如果SystemServer进程想向应用进程传递数据怎么办?这时候就需要重新定义一个Binder请求以SystemServer为client端,以应用进程为server端,这样就是实现了两个进程之间的双向通讯。 +这样,ActivityManagerNative与ActivityManagerProxy相当于一个Binder的客户端而ActivityManagerService相当于Binder的服务端,这样当ActivityManagerNative调用接口方法的时候底层通过Binder driver就会将请求数据与请求传递给server端,并在server端执行具体的接口逻辑。 好了,说了这么多我们知道这里的ActivityManagerNative是ActivityManagerService在应用进程的一个client就好了,通过它就可以滴啊用ActivityManagerService的方法了。