在学习Android Window方面知识时,遇到几个问题,希望有朋友能帮助解答下,感激不尽!1. 既然我们已经可以获得Window Manager的Proxy,为什么Android还设计了WindowSession这个机制进行会话呢?2. 是不是所有的Service都类似如上机制? 按我理解,如果获得了Proxy的话,不是可以直接在JVM利用RPC调用对应方法,比如addView,那么为何还要通过中间一个会话机制呢?最后,总结上面问题:
为什么不在Window Manager Service层直接实现addView,然后由我们获得代理对象调用并传入对应的主View,为什么非要通过IWindowSession来,这样有什么好处?

解决方案 »

  1.   

    引入中间层的目的一般都是隔离两个不同层,使两个层互相不可见,这样以后把被隔离的层重新实现一遍,对调用者也不会产生影响,比如常见的Delegate或Proxy机制等。我认为咱们获取到并不是Window Manager的Proxy,而是Window Manager自己。我倒是觉得WindowSession更像一个Provider,WindowManager通过它来完成工作。
      

  2.   

    楼上的朋友的意思是指,Window Manager本身一些功能需要WindowSession支持?所以不得不用?
      

  3.   

    我认为是因为,每一个window都会有自己独立的数据,在操作的时候需要这些数据,那么这些数据也是需要存储在服务端的,所以需要在服务端为每个对应的window开辟一个对应的session来保存数据,通过session来交互能够使用其对应的数据。