本人有点不是很清楚,为什么android要使用跨进程去通信呢?例如一个应用程序,将service不运行在app所分配的进程里面,而是运行在另个一进程里面,是不是为了将一些复杂的操作所需要的内存在单独的进程里面,照样相当于两倍的运行内存,错开app进程的内存吗?还是有其他的什么原因呢??android  aidlservice

解决方案 »

  1.   

    你需要去看下binder的通讯机制就知道为什么了
      

  2.   

    方便啊,打个比方吧,如果新浪app将业务逻辑放在自己的服务中,再使用aidl将接口公开,那第三方开发者程在开发新浪微博时,最简单的方案就是直接启动新浪官方app中的服务,所有工作都交给新浪app,比整合sdk简单太多了。
       当然新浪并没有这么做,但是类似的app还是有的,比如google的自己的应用内购买,就是用aidl调用的google play中的服务,简化了开发工作
      

  3.   

    据了解,ANDROID放弃了LINUX里使用的虚拟内存,也就是你说的那2倍的内存空间。主要是为了各个应用间的相互通信功能,楼上正解。
      

  4.   

    这涉及到Android的基本设计思想。Android架构师的设计理念是构造一个平坦的功能世界,所以必须打破以前相对孤立的App机制,于是,在Android应用层次,进程的概念就被大幅度地弱化了。然而,程序毕竟还是要在一个个进程上面运行的,所以必须在底层提供一种跨进程的通信机制,那就是binder机制。
      

  5.   

    一般来说跨进程通信是不安全的,但是android的提供的binder机制是比较安全的,做了很多工作,内存自然会占用不少,越是上层越是耗资源,如果单单是linux的跨进程我想应该会少用内存至少一半以上
      

  6.   

    Service另起进程有个好处,因为service和app生命周期不一样,分开有利于内存回收!