android的IPC机制

来源:互联网 发布:魔兽世界6.0数据库 编辑:程序博客网 时间:2024/05/18 20:11

         所谓的IPC机制就是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信。是指两个进程之间进行数据交换的过程。

        进程与线程的区别:线程时CPU调度的最下单元,同时线程时一种有限的系统资源。而进程是一个执行单元,在PC和移动设备上是指一个程序或一个应用。一个进程可以包含多个线程也可以只有一个线程,即主线程。在android中的主线程也加UI线程,在UI线程里面才能操作界面元素。很多时候一个进程需要执行很多耗时操作,如果这些操作放在主线程中去执行的话就会造成界面无法响应,严重影响用户的体验,这种情况在PC系统和移动系统都存在,在android中有一个特殊的名字叫ANR,即Application Not Responding,应用无响应,解决这个问题就要用到线程,把一些耗时的操作放到线程中即可。

       在android中比较有特色的进程间通信方式就是Binder了,通过Binder可以轻松实现进程间通信。除了Binder,android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然一个设备上的两个进程通过Socket通信自然也是可以的。

       通过给四大组件指定android:process属性,可以在android中轻松开启多进程模式。

      使用多进程会造成如下几个方面的问题:

      1> 静态成员和单例模式完全失效

            android为每个进程都分配了一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致了            在不同的虚拟机中访问同一个类对象会产生多份副本。

      2> 线程同步机制完全失效

            这个和第一个是类似的,不在一个内存里,不管是锁对象还是锁全局类都无法保证线程同步,因为不同进程锁          的不是同一个对象。

      3> SharedPreferences的可靠性下降

           因为SharePreferences不支持两个进程同时去执行写操作,否则会导致一定几率的数据丢失,这是因为                    Sharepreferences底层是通过读写XML文件来实现的,并发写显然是可能出问题的,甚至并发读/写都有可能出            问题。

      4> Application会多次创建  

                当一个组件跑到一个新的进程中的时候,由于系统要在创建新的进程同时分配独立的虚拟机,所以这个过程其           实就是启动一个应用的过程,因此会重新创建Application。

     实现跨进程通信的方式有多种:

     1、使用Intent来传递数据    

     2、共享文件和SharedPreferences

     3、基于Binder的Messenger和AIDL

     4、Socket等

0 0
原创粉丝点击