zoukankan      html  css  js  c++  java
  • 复习:IPC机制

    一、为什么需要IPC机制

    当我们开启多个进程的时候,我们有时需要和各个进程进行交互。但是进程间的交互就不能够共享对象(就是进程A中创建了一个对象,进程B中的类或者方法不能够直接使用,需要用到IPC机制),不能共享是规定,一个对象只能被一个进程使用。

    问:那么为什么需要多进程呢?

    Android下的多进程机制:

    1、如何创建多进程      小技巧:①、关于进程的命名

    2、多进程模式的运行过程

    ①、JVM 与内存

    3、多进程遇到的问题

    ①、无法共享内存地址的问题   ②、创建JVM的问题

    二、如何使用IPC机制

    1、Serializable接口

    ①、作用   ②、机制 ③、使用    ④、小技巧  ⑤、反序列化不成功的问题

    问:当User类存在未序列化的引用类型的参数,是否序列化成功

    public User implements Serializable{
      private String mName;
      private String mPsd;
      //存在非引用类型的成员变量的时候,反序列化能否成功,该Book类未序列化,与已序列化的情况
      private Book book;
    }
    User

    当Book类,未继承Serializable接口的时候,序列化失败。

    当Book类,继承接口的时候,序列化成功。

    2、Parcelable接口

    ①、作用   ②、机制 ③、使用  ④、与Serializable的区别

    3、跨进程调用

    ①、AIDL

    当一个进程想要暴露给另一个进程访问时,就必须定义这种通信的合约;

    Binder:是进程通信的工具

    ②、IPC机制的流程  弄懂各个方法的作用和工作流程  

    ③、当Service死亡重启的方法

    ④、如何使用 

    注意事项:①、Binder线程池与UI线程的切换 ②、线程池无法进行耗时长的工作

    ③、RemoteCallBack原理:因为返回的数据是经过Parcelable序列化返回的,但是他们的IBinder是不变的,RemoteCallBack保留IBinder,实现解注册

    ⑤、跨进程通信的其他方法。    1、五种方式  2、各个的优点  3、各个的原理是什么

    ⑥、服务端调用客户端方法的原理

    ⑦、当进程死亡时,如何自动重新注册

    4、权限验证

    ①、使用permission (Android permission用法

    在ServiceA利用permission标签设定权限,当B端需要使用ServiceA时候,必须声明A制定的权限。  之后还需要在Service判断,B端调用ServiceA的时候,是否声明了权限,权限验证这是在SerivceA中判断的。

    ②、在onTransact()方法中

    获取调用服务端的客户端的各种信息,指定只有客户端具有特定信息的才可使用(比如,包名以com.chen开头的客户端才能使用)

  • 相关阅读:
    堆排序
    conda 安装pytorch
    Dev GridControl GridView常用属性
    java 同步调用和异步调用
    spring Boot 整合 Memcached (含 windows 安装)
    spring Boot 整合 Elasticsearch
    windows 下安装 elasticsearch
    代理模式---Cglib动态代理
    代理模式---JDK动态代理
    代理模式---静态代理
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5566666.html
Copyright © 2011-2022 走看看