美文网首页
Android-IPC

Android-IPC

作者: 有腹肌的豌豆Z | 来源:发表于2020-09-28 08:30 被阅读0次

IPC机制简介

IPC是Inter-Process Communication的缩写,含义就是跨进程通信。
首先我们要理解什么是进程,什么是线程。按操作系统的描述,进程是资源分配的最小单位,而线程是CPU调度的最小单位,一个进程可以包含多个线程(主线程、子线程)。多线程需要考虑并发问题。
Android中的主线程是也叫UI线程,在主线程执行耗时操作会ANR。

IPC基础概念介绍

主要包含三部分:Serialiazable,Parcelable以及Binder

  • 序列化:将对象转化为字节的过程
  • Serialiazable:Java提供的序列化接口(标记接口)
  • Parcelable:android提供的序列化接口

Serialiazable与Parcelable的区别:Serialiazable使用简单但是需要大量I/O操作,Parcelable使用较繁琐,主要用于内存序列化,效率高。

  • Binder
    直观的看,Binder是Android中的一个类,实现了IBinder接口
    从不同角度理解Binder:
    1 从IPC角度,Binder是跨进程通信方式
    2 从FrameWork角度,Binder是ServiceManager连接各种Manager(如am, wm等)的桥梁
    3 从应用层角度,Binder是客户端与服务端通信的媒介

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

  • 静态成员变量和单例模式失效
  • 线程同步机制完全失效
  • SharedPreferences的可靠性下降
  • Application会多次创建
/**
     * 获取当前进程的名字
     *
     * @param context
     * @return
     */
    private String getCurProcessName(Context context) {
        int pid = android.os.Process.myPid();
        ActivityManager mActivityManager = (ActivityManager) context
                .getSystemService(Context.ACTIVITY_SERVICE);
        for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager
                .getRunningAppProcesses()) {
            if (appProcess.pid == pid) {

                return appProcess.processName;
            }
        }
        return null;
    }
 @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG, "onCreate: --> AIDLApplication 多进程执行多次");

        if (getCurProcessName(this).equals(getPackageName())) {
            Log.i(TAG, "onCreate: 主进程");
        } else {
            Log.i(TAG, "onCreate: 其他进程 名字是=" + getCurProcessName(this));
        }
    }

相关文章

  • Android-IPC

    IPC机制简介 IPC是Inter-Process Communication的缩写,含义就是跨进程通信。首先我们...

  • Android-IPC系列(一)

    未经博主同意,不得转载该篇文章 前言 IPC-进程间通信。安卓虽然是一个基于linux内核的系统,但是安卓却有自己...

  • Android-IPC系列(二)

    前言 写完IPC的第一篇我就有点后悔了。。因为binder的水太深了,老罗写binder写了十几万字。如果深入学习...

  • Android-IPC机制基础(一)

    1. Android IPC简介 ​ IPC是Inter-Process Communication的缩写,含...

  • Android-IPC机制(二)--Bundler、文件共享和M

    1.Bundle 我们知道,Acitivity、Service和Receiver都是通过Bundle进行通信的,所...

网友评论

      本文标题:Android-IPC

      本文链接:https://www.haomeiwen.com/subject/hvywyktx.html