Android IPC多进程通信总结

Android 面试必备:Android Framework 高频面试题——Binder 篇 1. Android中进程和线程的关系,区别 进程是什么? 它是系统进行资源分配和调度的一个独立单位,也就是说进程是可以独立运行的一段程序。 线程又是什么? 线程进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自 己基本上不拥有系统资源。在运行时,只是暂用一些计数器、寄存器和栈 。 区别: 进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数 器为其执行上下文。 进程间相互独立,同一进程的各线程间共享。 进程间通信IP 阅读详情

IPC(Inter-Process Communication) 进程间通信,是指两个不同进程之间数据交换的过程。一般在Android程序中一个进程就是一个程序(无特别代码实现的情况下),而一个程序分配的是单独的虚拟机,一个进程可以包含多个线程。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region),那么问题来了,两个进程间如何通信呢?本章不做详细介绍如何使用,只做一个总结,如详细研究请移步。

为什么要多进程?

1、一个进程Android分配的内存有限,早些Android版本一个进程只分配16M,如果一个应用太大,那么一个进程就无法满足。

2、守护进程:防止进程被kill

3、当前应用需要向其他应用获取数据。由于是两个应用,即两个进程。

*序列化的原因?

1、永久保存对象的字节序列到本地文件中
2、使对象可以在网络中 ipc中传递

*序列化接口

1、serializable接口:实现较简单、开销大、需要大量IO操作。适合将对象序列化到存储设备、对象序列化后通过网络传输
2、parcelable接口:是Android中的序列化方式、使用麻烦、效率高 适用于内存序列化上

*Binder介绍

用途:主要用于在service中、是一种跨进程通信方式
说明:aidl底层就是binder实现的;
如果binder突然死亡:需要在linkToDeath设置一个死亡代理来重新发起连接请求恢复连接

*binder连接池

目的:避免重复创建service
原理:根据不同的bindercode返回不同的binder对象然后进行操作
更新就只需要新建aidl文件、在bindpool中添加一个新的bindercode然后返回binder对象就好了

*Android中的IPC方式

Bundle:四大组件间的进程间通信方式,简单易用,但传输的数据类型受限。
文件共享: 不适合高并发场景,并且无法做到进程间的及时通信。
Messenger: 数据通过Message传输,只能传输Bundle支持的类型
ContentProvider:android 系统提供的。简单易用。但使用受限,只能根据特定规则访问数据。
AIDL:功能强大,支持实时通信,但使用稍微复杂。
Socket:网络数据交换的常用方式。不推荐使用

Android多进程通信、Binder、IPC机制这一篇就够了!!! Android IPC简介 IPC含义:进程间通信,是指两个进程间尽享数据交换。 多进程使用场景: 应用根据业务需求需要多进程来实现 为了加大一个应用可使用的内存所以需要多进程来获取多份内存空间。 Android中的多进程模式 一般情况下指一个应用存在多个进程。在Android中使用多进程只有一种办法,就是给四大组件(Activity、Service、Receiver、ContentProv... 阅读详情

相关推荐

Android多进程通信(IPC)原理、Binder机制与实战避坑指南

进程间通信(IPC)是操作系统中的基础概念,它允许运行在不同内存空间的进程交换数据与指令,是实现模块化、稳定性和性能扩展的核心技术。其原理通常基于内核提供的共享内存、消息队列或远程过程调用等机制,在内存隔离的进程间建立可控的数据通道。在Android生态中,IPC的技术价值尤为突出,它支撑着应用稳定性(进程隔离防崩溃)、性能优化(突破单进程内存限制)与安全性(系统服务隔离)三大核心诉求。典型的应用场景包括多进程应用架构设计、系统服务调用以及跨应用数据共享。本文聚焦Android平台,深入剖析其IPC基石Bi

weixin_34228387的博客 294

IPC 机制篇

1, Android中进程和线程的关系?区别? 答: 不只是在 Android 中, 进程在操作系统的级别上来说, 是属于操作系统分配资源的最小单位, 是运行在某一片内存地址中的自包容性的程序,   而线程是属于事件调度的最小单位, 它是属于进程中的一个单一的程序控制流,   一个进程往往可以包含多个线程, 对于 Android APP 来说, 一般情况下, 一个 APP 就只有一个进程, 但是...

DJH2717的博客 661

IPC(上)-多进程入门

1 IPC介绍既然是IPC的开篇那么先介绍下IPC的定义 IPC:进程间通信或者跨进程通信,即进程间交换数据的过程. 说到进程,那么需要了解下什么是进程.什么是线程,按操作系统描述,线程是CPU调度的最小单元,同时线程是一种有限的系统资源,而进程指一个执行单元,在PC和移动设备上指一个程序或者应用,一个进程可以包含多个线程,因此进程和线程是包含和被包含的关系,在Android中进程间通信方式就是

朱利源的博客 3121

安卓开发-基础知识补习12

IPC:Inter-Process Communication,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。线程:是CPU调度的最小单元。一般指一个执行单元,PC和移动设备上指一个程序或者一个应用。进程:一种有限的系统资源。一个进程可以包含多个线程。最简单的情况下,一个进程中可以只有一个线程,即主线程,在安卓里面主线程也叫UI线程,在UI线程里面才能操作界面元素。很多时候,一个进程中需要执行大量的耗时任务,如果这些任务放在主线程中执行就会造成界面无法响应。

while(true) 966

【Android逆向工程】第24章:多进程保护与对抗

本文介绍了Android多进程架构及其安全保护机制。主要内容包括:多进程的隔离保护、稳定性提升等优势;通过AndroidManifest配置不同进程类型;使用adb和Frida工具查看进程信息;Binder IPC实现进程间通信,包含守护进程监控主进程存活的实现方案。文章还涉及进程守护、注入技术、Hook技术等高级话题,以及实战案例和常见问题解决方案,为Android应用安全防护提供技术参考。

w987333120的博客 218

SAP成本控制范围配置全流程:从货币参数到标准层次(附2024最新SPRO路径)

本文详细拆解了SAP成本控制范围(Controlling Area)的完整配置流程,涵盖从货币与估价参数文件定义、参数文件分配到控制范围,再到成本中心标准层次创建等核心步骤。文章提供了2024年最新的SPRO导航路径和实战配置要点,帮助顾问构建稳健、可扩展的管理会计基础架构,并附有常见问题排查指南。

java5的博客 939

面试题:IPC(跨进程通信)

Q1:IPC基础及概念? Q2:Android中进程和线程的关系?区别? Q3:为何需要进行IPC?多进程通信可能会出现什么问题? Q4:Android中IPC方式有几种? 为何新增Binder来作为主要的IPC方式? Q5:使用Binder进行数据传输的具体过程? Q6:Binder框架中ServiceManager的作用? Q7:Android中有哪些基于Binder的IPC方式?简单对比下?...

songzi1228的博客 4719

STM32家电安全开发实战:手把手教你用X-CUBE-CLASSB通过IEC60730 Class B认证

本文详细解析了如何使用STM32的X-CUBE-CLASSB软件包通过IEC60730 Class B认证,涵盖认证核心要求、软件包架构、工程集成配置及调试技巧。针对家电安全开发,提供了从单元测试到压力测试的全流程方案,帮助开发者快速实现符合国际安全标准的嵌入式控制系统。

pink的博客 704

进程间通信(IPC)作用&为什么要使用进程间通信?

1)数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。 2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 3)通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 4)资源共享:多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制。 5)进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能

weixin_49148527的博客 1611

深入解析STM32H743双精度FPU:从配置误区到三角函数加速技巧

本文深入解析STM32H743双精度FPU的配置与优化技巧,涵盖常见误区、三角函数加速及飞控系统应用。通过实测数据展示如何利用FPU提升数学运算效率,特别适合工业控制、无人机飞控等高精度实时应用场景。

weixin_29190651的博客 640

HBuilderX远程开发环境配置:Windows SSH连接实操

详细介绍如何在Windows系统中通过SSH连接远程服务器,配置HBuilderX进行高效远程开发,提升编码协作效率。全程实操演示,轻松掌握hbuilderx与远程环境的无缝对接。

weixin_35751194的博客 1192

Android 多进程、进程间通信(IPC)的几种方式

在一个应用中启动多个进程 例如:将自己封装的CommonWebViewActivity在一个单独的进程中启动 使用android:process <activity android:name=".activity.CommonWebViewActivity" android:process=":webview" android:screenOrientation="portrait" /> 需要特别说

张雨的博客 2956

YOLO11改进策略【独家融合改进】| EfficientViMBlock + LGAG + DySample

通过学习采样来学习上采样DySample。

Limiiiing的博客 363

Java/Android 进程与线程之 多进程通信IPC(四)

这里写目录标题一级目录二级目录三级目录 一级目录 二级目录 三级目录

lizhichao628的专栏 489

YOLOv11涨点改进 | 全网独家创新,损失函数改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出了一种改进YOLOv11模型的AdaFocalLoss损失函数,通过动态调节机制有效提升小目标检测性能。AdaFocalLoss融合了目标尺寸感知和IoU引导的自适应调节,解决了传统损失函数在小目标检测中的样本不平衡问题。该方法自动调整训练权重,无需手动调参,显著提升了模型在多尺度目标、复杂背景下的检测精度和训练稳定性。实验表明,AdaFocalLoss能更好地平衡不同尺度目标的梯度分布,改善边界完整性,减少误检漏检。文章详细介绍了算法原理、实现代码和在YOLOv11中的集成方法,为提升目标检测性能

Ai缝合怪、助力小伙伴高效发论文 335

LPDDR6与LPDDR5 State Diagram技术探讨

LPDDR6与LPDDR5 State Diagram技术探讨

zilan23的博客 1176

android ipc 多个客户端,GitHub - poecook/IPCDemo: Android IPC多进程通信 aidl

Android IPC 概述开启进程Android 开启多进程的方法很简单,四大组件在AndroidMenifest中给android:process属性指定值如下:android:process=":remote"android:name=".ServerService">多进程带来的问题一个应用中四大组件处于不同的进程中就意味着他们有独立的运行空间,虚拟机和Application,相应的...

weixin_42298100的博客 231

用 i18n 驯服标准文案:SAP Fiori elements 的 UI 文本本地化与可替换实践全景

本文系统介绍了SAP Fiori elements应用中UI文本本地化的全面解决方案。从框架层与应用层文本的分类原则出发,详细解析了标准文本替换的四步法:资源准备、键值定位、模型配置和验证部署。文章特别针对不同开发场景,提供了XML、ABAP CDS和CAP CDS三种注解方式的文本覆盖写法示例。同时深入探讨了语言回退机制、表格组件标准键覆盖等关键技术细节,并指出了实际项目中的常见问题与解决方案。通过结合官方文档和社区实践,为开发人员在不破坏框架约定的前提下,实现稳定可靠的UI文本本地化提供了完整指导。

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

Android-Chromium多进程架构与IPC通信——核心要点摘要

本文深入解析了Chromium的多进程架构与IPC通信机制。主要内容包括: 多进程模型 采用Browser(主控)、Renderer(渲染)、GPU(图形)和Utility(辅助)进程分工 通过进程隔离实现安全性(SELinux+Seccomp沙箱)和稳定性 各进程生命周期和职责明确 IPC通信 基于Mojo框架实现跨进程通信 定义多种消息类型(FrameMsg/FrameHostMsg等)实现双向交互 通过管道传递序列化消息,支持异步回调 核心组件 Blink引擎完成解析→样式→布局→绘制→合成的完整渲染

保持专注,保持热爱 627

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android IPC | Android多进程模式

Android系统会为每个应用分配一定的内存,但是有些功能十分消耗内存,比如查看图片这种功能,这时为了防止该功能导致应用内存过多导致OOM,可以把该功能单独拎出来,在单独进程中进行,这样就可以获取双份内存,突破了单一应用的内存限制。关于Android的进程间通信(即IPC)有很多种方式,比如我们常用的AIDL、Socket等,而其中最重要而且最需要掌握的就是AIDL的使用和原理,简单来说它是通过Binder实现的。

编程进化论 1164

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android中IPC机制简介

除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信也自然是可以的。什么是进程,进程和线程是截然不同的概念。按照操作系统中的描述,线程是cpu调度最小的单元,同时线程是一个有限的系统资源。IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程间进行数据交换的过程。最简单情况下,一个进程中可以只有一个线程,即主线程,安卓中为UI线程。

Ueming的博客 1706

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android中 线程进程介绍 多线程多进程 线程通信方式 进程通信方式IPC

线程的通信方式: 1.通过synchronize关键字来对多个线程进行同步,这样得到的数据会是同步的,读写也不会出问题。 2.通过同步方法中的wait/notify方法来对线程进行停止唤醒 某系统中有3个并发进程,都需要同类资源4 个,试问该系统不会发生死锁的最少资源数是: 10 在本题目中,当有三个并发进程同时对资源进行申请时,最可能发生死锁的情况是三个进程当...

emmmsuperdan的博客 1118

Android 多进程IPC(进程间通信)问题(一)

什么是IPC? 在Android中如何进行多进程? 简单,在需要开启进程的Activity中声明一下即可, 使用android:process声明,引号中的内容是进程的名字,这个可以自己定义。 &lt;activity android:name=".SecondActivity" android:process=":remote"...

callmeL的博客 971

android的ipc(进程间通信)机制,Android进程间通信(IPC机制)

一.IPC简介1.IPC:是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。2.线程:是CPU调度的最小单元,同时线程是一种有限的系统资源3.进程:是指一个执行单元,在PC和移动设备上是指一个程序或者一个应用,一个进程可以包含多个线程,因此进程和线程是包含与被包含的关系。4.Android里面的主线程,也称为UI线程...

weixin_29467373的博客 556

Android进程通信机制(IPC机制)

IPC,是进程之间通信或跨进程通信,为Inter-Process Communication得缩写,IPC也不是Android所独有得,任何一个操作系统都需要有相应的IPC机制。IPC应用的场景,既然是进程间通信,那就一定是多进程的场景下才考虑,比如某些工作需要运行在独立的进程中,或者利用多进程,开辟更大的内存空间等。Android中最有特色的进程间通信方式是Binder,除了Binder,还有Socket,管道、信号量、文件共享。二、Android中的多进程模式。

qq_34629725的博客 1887
上一篇: Android 浅析Context
下一篇: 利用0-1背包问题谈动态规划
HJsir
博客等级 码龄10年 19粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值