转自:http://blog.sina.com.cn/s/blog_4e1e357d0102wau9.html

1.bus工程实现通过service实现aidl实体类

2.actor工程通过发起bindservice,根据action去启动远程(跨进程的)bus上的aidl。
 
那么问题来了,我们知道,linux系统进程间通信,各个进程间资源是隔离的,两个进程间需要通信,就要把msg转换成底层os系统能够识别的数据单元,在Android里面的方案是aidl+parcelbal的序列化。
 
 
为了模拟和测试aidl的性能问题,我做了个简单实验,在Android中,进程间通信通过binder实现,bind是通信的数据载体,当序列化后的数据单元过大时,就会出问题,报出android.os.TransactionTooLargeException。
 
 
官方文档里有说明,最大通常限制为1M.也就是说如果大于1M数据的话,就应该分开传。理论上说,应该都是对象和字符串类型的数据为主,只要不是大图片实体等问题,一般应该够用。
我这边做了一个测试,序列化传送了450k的String被序列化 后的数据,耗时使用了33秒的时间。
 try {
StringBuilder sb = new StringBuilder();
for(int i = 0;i< 30;i++){
sb.append(new String (stringMsg));
}
System.out.println( "actor time start :" + System.currentTimeMillis());
binder.sendMsg("msg from actor : " + sb.toString());
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
------
 
public static BusCore coreBinder = new BusCore.Stub() {
 
@Override
public void sendMsg(String msg) throws RemoteException {
Log.d("", " RemoteBusCoreService msg:" + msg);
 
System.out.println("buscore time end :" + System.currentTimeMillis());
}
};
 
 
对于远程服务,必须调用 bindService()方法,而不是 startService()方法。
 
今天刚好是在做框架性 实现方案测试时,稍微检测了下个,mark下。

android aidl 进程间通信需要注意的地方(android.os.TransactionTooLargeException)的更多相关文章

  1. [置顶] android AIDL 进程间通信

    1.定义aidl文件 a.ITestService.aidl package com.open.aidl.service; import com.open.aidl.service.ITestServ ...

  2. Android开发——进程间通信之AIDL(二)

    0.  前言 不论是Android还是其它操作系统.都会有自己的IPC机制.所谓IPC(Inter-Process Communication)即进程间通信.首先线程和进程是非常不同的概念,线程是CP ...

  3. android中的AIDL进程间通信

    关于IPC应该不用多介绍了,Android系统中的进程之间不能共享内存,那么如果两个不同的应用程序之间需要通讯怎么办呢?比如公司的一个项目要更新,产品的需求是依附于当前项目开发一个插件,但是呢这个插件 ...

  4. (转载)你真的理解Android AIDL中的in,out,inout么?

    前言 这其实是一个很小的知识点,大部分人在使用AIDL的过程中也基本没有因为这个出现过错误,正因为它小,所以在大部分的网上关于AIDL的文章中,它都被忽视了——或者并没有,但所占篇幅甚小,且基本上都是 ...

  5. Android AIDL使用详解_Android IPC 机制详解

    一.概述 AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来 ...

  6. Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  7. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...

  8. Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6633311 在上一篇文章中,我 们分析了And ...

  9. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系 ...

随机推荐

  1. android-自定义控件之液位指示器

    由于安卓应用很广泛,在工业中也常有一些应用,比如可以用安卓来去工业中的一些数据进行实现的监测,显示,同时可以做一些自动化控制,当然在这里,我不是做这些自动化控制方面的研究,只是做一个控件,液位指示,其 ...

  2. golang实现随机数

    package main import ( "fmt" "time" "math/rand" ) func main() { r := ra ...

  3. Apache RewriteRule

    1.Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块 ...

  4. 锋利的JQuery 学习笔记

    第一章                认识JQuery ·页面加载事件(可以写多个ready())$(document).ready(function(){alert(“hello world”);} ...

  5. Web前端开发的前景与用处

    随着时代的发展,现在从事IT方向的人有很多,所以励志要成为前端开发工程师的人有很多.当然也有很多人在犹豫不知道该从事哪个方向,我今天就是来给大家分析一下Web前端开发的前景.包括工作内容,发展前景和薪 ...

  6. Socket支持多用户并发访问的解决办法

    //创建线程池,池中具有(cpu个数*50)条线程 ExecutorService executorService = Executors.newFixedThreadPool(Runtime.get ...

  7. MySQL5.6下使用xtrabackup部分备份恢复到MySQL5.7

    现有需求:需要备份MySQL5.6环境下的部分表到MySQL5.7环境下并进行恢复 通过xtrabackup 实现部分备份有三种方式: 参考链接:http://blog.csdn.net/zhu197 ...

  8. 实用工具【SqlPrompt】 【Subline】 【XMind】 【PhotoShop】 【TakeColor】 【Q+】本次只讨论SqlPrompt

    SqlPrompt[Sqlserver智能提示插件] 1.SqlPrompt可实现sql智能提示,并且会自动关键字大写,如select * from 表名[表名包含的字符],如果实在不知道表名可以按c ...

  9. 学习NSRulerView

    NSRulerMarker 有个imageOrigin是描述Marker中image的位置的: 在horizontal的ruler中,imageOrigin的x坐标是跟marker的location进 ...

  10. ionic2 图片上传

    参考URL:https://github.com/dsgriffin/Ionic-2-File-Transfer-Example