Android开发艺术探索(研读笔记)——03-Android中的IPC机制(一)

Android 中的IPC机制 Android IPC 介绍IPC是 Inter-Proscess Communication的缩写,含义为进程间的通讯或者跨进程通讯,是指两个进程之间进行数据交换的过程。按操作系统的中的描述,线程是CPU调度最小的单元,同时线程是一种有限的系统资源,而进程是指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程,因此进程和线程是包含于被包含的关系。IPC的使用场景就必须 阅读详情

Android开发艺术探索(研读笔记)

03-Android中的IPC机制(一)

1.Android IPC 简介

IPC(Inter-Process-Communication):含义为进程间通信,指两个进程之间进行数据交换的过程。

什么是进程:一般指一个执行单元,在PC和移动设备上的一个程序或者一个应用。
什么是线程:线程是CPU调度的最小单元,是一种有限的系统资源。

而一个进程可以包含多个线程。

2.Android中的多进程模式

只需要给四大组件指定 android:process 属性,就可以开启多进程模式。(非常规的方法,JNI在native层去fork一个新的进程)

//没有定义默认进程的进程名为包名:"com.dimon"
android:process=":remote"  ->  进程名:"com.dimon:remote" 用":"开头的进程属于当前应用的私有进程
android:process="com.dimon.remote"  ->  进程名:"com.dimon.remote" 全局进程

私有进程:其他应用的组件不可以和它跑在同一个进程中。

全局进程:其他应用通过ShareUID(每个应用都有自己唯一的UID,具有相同UID的应用才能共享数据)方式可以和它跑在同一个进程。同个应用间的多进程可以理解为两个不同的应用采用了ShareUID模式。

除了DDMS视图查看进程外,还可以用shell来查看,命令为:adb shell ps 或者 adb shell ps|grep com.dimon(com.dimon是包名)

多进程会造成的问题
  • 静态成员和单例模式完全失效:主要是每个进程都分配了一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间;
  • 线程同步机制完全失效:因为不是同一块内存所以无法保证线程同步了;
  • SharePreferences的可靠性下降:SharePreferences底层是通过读/写XML文件来实现的,并发写可能会出现问题,也就是说其不支持两个进程同时去执行写操作;
  • Application会多次创建

Serializable接口

Serializable是Java所提供的一个序列化接口。

public class User implements Serializable{
  private static final long serialVersionUID = 519067123721295773L;//反序列化的时候系统会检测是否版本相同,相同才可以算成功反序列化,不相同则会反序列化失败

  public int userId;
  public String uesrName;
  public boolean isMale;
  ...
}
//序列化过程
User user = new User(0, "jake", true);
ObjectOutputStream out = new ObjectOutputStream(
  new FileOutputStream("cache.txt"));
out.writeObject(user);
out.close();

//反序列化过程
ObjectInputStream in = new ObjectInputStream(
  new FileInputStream("cache.txt"));
User newUser = (User) in.readObject();
in.close();
  • 静态成员变量属于类不属于对象,所以不会参与序列化过程;
  • 用transient关键字标记的成员变量不参与序列化过程;

Parcelable接口

典型用法:

public class User implements Parcelable {
  public int uesrId;
  public String uesrName;
  public boolean isMale;

  public Book book;

  public User(int userId, String uesrName, boolean isMale) {
    this.userId = userId;
    this.uesrName = uesrName;
    this.isMale = isMale;
  }
// 内容描述功能:对象存在文件描述符时,方法1
  public int describeContents() {
    return 0;
  }

// 序列化功能
  public void writeToParcel(parcel out, int flags) {
    out.writeInt(userId);
    out.writeString(uesrName);
    out.writeInt(isMale ? 1 : 0 );
    out.writeParcelable(book, 0 );
  }

// 反序列化功能
  public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {
    public User createFromParcel(Parcel in) {
      return new User(in);

    public User[] newArray(int size) {
        return new User[size];
      }
    };

    private User(Parcel in) {
      userId = in.readInt();
      uesrName = in.readString();
      isMale = in.readInt() == 1;
      // 传递当前线程的上下文类加载器
      book = in.readParcelable(Thread.currentThread().getContextClassLoader());
    }
  }
}

parcelable 与 Serializable的对比

  • Serializable是Java中的序列化接口,其使用起来简单但是开销很大,序列化和反序列化过程需要大量I/O操作。
  • Parcelable是Android中的序列化方式,缺点就是使用起来稍微麻烦点,但是它的效率很高,是Android推荐的序列化方式。

在Android平台上,推荐Parcelable,但在将对象序列化到存储设备或者将对象序列化后通过网络传输建议使用Serializable


  • Good Luck!
IPC机制与面试题精选《Android开发艺术探索》笔记 文章目录IPC简介IPC的概念进程与线程的区别多进程的情况 IPC简介 IPC的概念 Inter-Process Communication的缩写。含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程。 进程与线程的区别 线程是CPU调度的最小单元,同时线程是一种有限的资源。 进程一般指一个执行单元,一个进程可以包含多个线程,所以他们之间是包含与被包含的关系。(比如Android中有... 阅读详情

相关推荐

Android开发艺术探索笔记(含思维导图)

1 Activity的生命周期和启动模式 1) onStart 和onstop是从activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否位于前台这个角度来回调的。 启动Activity的请求会由Instrumentation来处理,然后它通过Binder向AMS发请求,AMS内部维护着一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread去同步Activity的状态从而完成生命周期方法的调用 图1...

fdsafwagdagadg6576的专栏 1344

Android Framework跨进程通信IPC之4——AndroidIPC基础1

进程Process 是程序的一个运行实例,以区别于"程序" 这一个静态概念;而线程(Thread) 则是CPU调度的单位。当前大部分操作系统都是支持多任务运行,这一特性让用户感到计算机好像可以同时处理很多事情。显然在只有一个CPU核心的情况下,这种"同时"是一种假象。它是操作系统先采用分时的方法,为正在运行的多任务分配合理的、单独的CPU来实现的。比如当前系统有5个任务,如果采用"平均分配"法且时间为10ms的话,那么各个任务每隔40ms就能被执行一次。

Gaga246的博客 925

用Python实现斗地主游戏(终端版)

马上就要过年了 大家也都放假了吧 过年必不可少的活动 打牌! 今天带大家来写一份斗地主 (又是好多天没怎么更新,忙成狗啊) 那么实现一个斗地主呢 我们肯定要先完善卡牌系统 from collections import Counter import numpy as np import itertools def cmp_to_key(mycmp): 'Convert a cmp= function into a key= function' class K: def _

Miku_wx的博客 9854

Android 一天搞定 NDK和JNI编程 3分钟学会写NDK实例

Android NDK 是在SDK前面又加上了原生二字,即Native Development Kit,因此又被Google称为NDK。 1、什么是JNI?      JNI全称 Java Native Interface , java本地化接口 ,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。它允许Java代码和其他语言写的代码进行交互,

深南大盗的博客 8634

5G R18标准:AI/ML如何重塑空口优化与网络架构

人工智能与机器学习正逐步成为通信网络优化的核心技术。其核心原理在于通过数据驱动模型,从海量网络数据中学习信道变化、用户行为等统计规律,替代传统的基于固定规则的优化方法。这一技术范式能显著提升网络性能与效率,尤其在空口资源管理、干扰协调和能耗控制等场景中价值突出。在5G Advanced(R18)标准化框架下,AI/ML被系统性地引入空口设计,聚焦于信道状态信息反馈增强、波束管理与预测等关键用例。通过定义网络侧AI、终端侧AI及联合学习的标准化接口与流程,R18旨在实现跨厂商设备的智能协同,推动无线网络向自适

weixin_35671843的博客 242

扩增子分析|基于零模型的群落确定性和随机性构建过程——R实战

周集中教授团队多年在群落确定性和随机性过程深耕,于2017年总结出来下述图表中的计算路径,广受生态领域研究者的推崇。本文基于该计算路径,梳理了整理了邓晔老师组的代码,通过一个实例演示了计算过程和结果。

weixin_46814750的博客 4669

浅谈IPC|Binder

前言 在学习IPC机制之前,我会问自己几个问题,并且希望在书中找到问题的答案,这些问题就是: IPC是什么? 为什么要学IPC? 怎么进行IPC? 下面是我这篇博文的学习脑图,方便读者更快的找到自己想要了解的知识点。 一、IPC简介 1.1什么是IPC IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。 看到这里,需要先了解一下进程、线程以及它们的关系。 进程:一般指一个执行单元,在PC和移动设备上指一个

Yuki-r的博客 2855

智能车图像处理0-变量释义

这篇文章主要讲述智能车图像处理中,各篇主要变量的含义。如果在看具体分析代码时感到困惑,可以在本篇文章中查询,辅助理解。

taiyuezyh的博客 3669

读书笔记-Android进阶指北-IPC机制

主要内容:IPC机制即进程间通信,是 Android 的基础知识点之一。 阅读目标:在实际项目中可能用的不多,但对于相关概念有必要了解,在需要的时候可以快速的掌握并运用。 文章内容 Android 基于 Linux 做了适合自己的 IPC 机制,其中核心的一点是 Binder,其实也就是说 Android 的 IPC 机制本质是基于 Binder 实现。 Linux IPC 机制实现主要有 Pipe(管道),Signal(信号),Semophore(信号量),Message(消息队列),Socket(套接字

Jkwen 的专栏 454

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1171

YOLOv8模型改进、剪枝、蒸馏和Web端界面的直观展示

模型蒸馏与性能提升 为了进一步优化YOLOv8模型,可以使用蒸馏技术将大型模型的知识转移到小型模型中。在模型蒸馏过程中,通过定义适当的损失函数和训练策略,学生网络可以学习教师网络的知识,并达到接近教师网络性能的效果。这样做不仅可以减少模型的存储和计算开销,还可以提高模型的推理速度和实时应用的响应能力。这样,用户可以直观地观察到模型的性能和应用的效果。为了优化YOLOv8模型并实现直观地观看检测效果或训练结果的全家通应用,本文将探讨如何通过改进、剪枝和蒸馏技术,并结合Web端界面来提升模型性能。

weixin_51988935的博客 2396

Android IPC 通信机制

1.1IPC是Inter Process Communicationde的缩写,意为跨进程通信或进程间通信. 进程和线程的区别与关系: 进程:一般是指一个执行单元,在pc和移动设备上指一个程序或一个应用. 线程:是cpu调度的最小单元,同时线程是有限的系统资源. 一个进程可以包含多个线程,因此进程和线程之间是包含和被包含之间的关系. 2.1如何开启多进程? 在Android中多进程...

Alrict的博客 344

130、NPU的仿真测试:使用Gem5进行全系统仿真

这篇文章摘要(149字): 本文分享了使用Gem5全系统仿真器验证NPU设计的实践经验。作者通过搭建自定义NPU模型并集成到Gem5系统中,实现了CPU-NPU-内存协同仿真。关键点包括:1) 使用SimObject机制构建可配置的NPU模型;2) 合理配置IO和内存总线避免访问冲突;3) 开发Linux驱动实现CPU与NPU通信;4) 利用Gem5调试功能监控内部状态。相比RTL仿真和FPGA验证,该方法能快速验证微架构设计并定位系统级问题,有效减少了流片风险。文章特别强调了时钟域配置、总线仲裁、对齐访问

m0_50546716的博客 122

《Android 开发艺术探索》笔记2--IPC机制

《Android 开发艺术探索》笔记2--IPC机制思维导图Android IPC简介Android中的多进程的模式IPC基础概念Serializable接口Parcelable接口Android的几种跨进程的方式使用Bundle使用文件共享使用Messenger使用AIDL各种IPC的差异以及选择参看文章 思维导图 Android IPC简介 IPC是Inter-Process Communication缩写,含义为进程间通信. 按照操作系统中的描述,线程是cpu调度的最小单元,而进程一般指一个执行单元

行动者&&职业化 2473

《低功耗方法学》翻译——卷首语

低功耗设计方法学。

记录所学,分享知识,结识挚友 991

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《android开发艺术探索》笔记

android开发艺术探索笔记第一章Activity的生命周期和启动模式1.1 生命周期1.1.1 正常情况下的生命周期分析1.1.2 异常情况下的生命周期分析1.2 Activity的启动模式1.2.2 Activity的Flag1.2.3 IntentFilter的匹配规则第二章 IPC机制 第一章Activity的生命周期和启动模式 1.1 生命周期 1.1.1 正常情况下的生命周期分析 (1)第一次启动:onCreate->onStart->onResume。 (2)当用户打开一个新的

chen_xiaoke的博客 5827

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《Android开发艺术探索》完结篇

笔记链接: 《Android开发艺术探索》之Activity的生命周期和启动模式(一) 《Android开发艺术探索》之IPC机制上(二) 《Android开发艺术探索》之IPC机制下(三) 《Android开发艺术探索》之View的事件体系(四) 《Android开发艺术探索》之View的工作原理(五) 《Android开发艺术探索》之理解RemoteViews、BroadCastR...

云瀚的自习室 3372

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《Android开发艺术探索》第2章- IPC 机制读书笔记

目录1 Android IPC 简介 1 Android IPC 简介 IPC 是 Inter-Process Communication 的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程。IPC 并不是 Android 所独有的,任何一个操作系统都需要有相应的 IPC 机制。 在 Android 中,最有特色的进程间通信方式就是 Binder 了。 ...

willwaywang6 2029

《Android开发艺术探索》读书笔记--第2章 IPC机制

第2章 IPC机制 2.1 Android IPC 简介 IPC 是 Inter-Process Communication 的缩写,进程间通信或跨进程通信,两个进程之间进行数据交换过程。 进程:系统进行资源分配和调度的基本单位。 线程:CPU 调度的最小单元。 Binder:Android 特色的进程通信方式。 应用场景 1.应用某些业务场景需要自身采用多进程模式,例如有些模块需要运行在单独进...

soleil雪寂 2981

Android开发艺术探索完结篇——天道酬勤

这片文章发布,代表着我已经把本书和看完并且笔记也发布完成了,回忆了一下我看Android群英传,只用了两个月,但是看本书却花了2016年05月04日 - 2018年07月16日,整整两年多,真是惭愧 笔记链接 Android开发艺术探索——新的征程,程序人生路漫漫! Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式 Android开发艺术探索——第二章:IPC...

刘桂林的博客 1万+

《Android开发艺术探索》之IPC机制上(二)

第二章:IPC机制 IPC是进程间通信或者跨进程通信。本章涉及(1)Android中的多进程概念;(2)IPC基础概念介绍(3)Bundle、文件共享、AIDL、Messenger、ContentProvider和Sock...

云瀚的自习室 1141

《Android开发艺术探索》笔记目录

该笔记以《Android开发艺术探索》为基础,结合Android 9.0代码和官方文档,修正了原书中表述不明确和过时的部分,同时加入了大量的个人理解。 13章,14章,15章是总结性的章节,没有列出,建议直接看原书。 Android开发艺术探索 - 第1章 Activity的生命周期和启动模式 Android开发艺术探索 - 第2章 IPC机制 Android开发艺术探索 - 第3章 View的事...

Think,Make 887

《Android开发艺术探索》

序 昨晚准备参考一下 《Android 开发艺术探索》这本书写一个博客 ,但是在家里找了好长时间也找不见 。所以就找了网上的文章 。这本书强烈推荐大家好好读几遍 。 《Android开发艺术探索》之Activity的生命周期和启动模式(一) 《Android开发艺术探索》之IPC机制上(二) 《Android开发艺术探索》之IPC机制下(三) 《Android开发艺术探索》之...

Super 含 的博客 515

[学习笔记]Android开发艺术探索:IPC机制

Android IPC简介 IPC为进程间通讯,两个进程之间进行数据交换的过程。 IPC不是Android所独有的,任何一个操作系统都有对应的IPC机制。Windows上通过剪切板、管道、油槽等进行进程间通讯。Linux上通过命名空间、共享内容、信号量等进行进程间通讯。Android中没有完全继承于Linux,有特色的进程间通讯方式是Binder,还支持Socket。 Android中的多进程模式...

尘埃zza的博客 511

Android开发艺术探索读书笔记(一)

首先向各位严重推荐主席这本书《Android开发艺术探索》。     再感谢主席邀请写这篇读书笔记 + 书评。书已经完整的翻完一遍了,但是还没有细致的品读并run代码,最近有时间正好系统的把整本书从内容到代码都梳理一遍,一方面方便自己总结,一方面也为主席宣传,如果你还在犹豫要不要入手这本书的时候,希望看完我的笔记,能激发你购买的动力。OK,言归正传,下面先简单写几句书评,本人技术有限,只是从自身

amurocrash的专栏 9618

Android开发艺术探索——IPC机制

这是我在学习过程中总结的知识 目的是希望日后回来看或者需要用的时候可以 一目了然 # 的回顾、巩固、查缺补漏 不追求详细相当于书本的精简版或者说是导读(想看详细的直接对应翻书),但会尽力保证读者都能快速理解和快速使用(随理解加深会总结的更加精简),但必要时会附上一些较详细解释的链接 脚注是空白的:表示还没弄懂的知识,了解后会添加 文章目录2.2 Android中的多进程模式2.2.1 关于进程命名...

Xeldow的博客 279
上一篇: Android开发艺术探索(研读笔记)——02-Activity的启动模式
朴哲
博客等级 码龄11年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值