Android之两个应用之间的通信与调用

Android 里面的两个APK通信的方式有哪些?

自己网上查了查,总结了一下:

1. 广播,最简单的方法,这个实现起来比较简单

2. AIDL,功能强大,支持一对多并发通信,支持实时通信。

3. 网上一个人写的:

思路  

  通过apk1调用apk2的services,
  在onServiceConnected的时候返回apk2中的自定义IBinder对象,
  通过反射调用apk2中自定义IBinder对象中的方法getView(Handler handler),把apk1中的handler对象传入apk2中
  可把apk2中的view对象通过handler.obtainMessage(1, view).sendToTarget();返回到apk1中
  这样子apk1就能调用apk2中view对象了

附上下载包:源码包

4.和第三种类似,有一个可以获取另一个APK的context的方法,createPackageContext(String, int),获取到context方法之后就可以调用另一个apk的方法了,但是要保证另一个apk是安装过的,具体是使用sharedUserId来解决的
参考资料:http://www.cnblogs.com/mythou/p/3258715.html

5.如果另一个apk没有被安装过呢?

 4和5两种方式,可以参考网上的两片大牛的博文

  点我

6.文件共享,简单易用,适用于不是高并发并且不需要实时性的进程间实时通信

7.Messenger,功能一般,支持一对多串行通信,支持实时通信,缺点是不能很好处理高并发情形,不支持RPC,数据通过Message进行传输,因此只能传输Bundle支持的数据类型。适用场景是低并发的一对多即时通信,无RPC需求,或者无须要返回结果的RPC需求。

8.ContentProvider,优点是在数据源处理方面功能强大,支持一对多并发数据共享,可通过call方法扩展其他操作,适用与一对多的进程间数据共享。

9.Socket,功能强大,可以通过网络传输字节流,支持一对多并发实时通信,适用于网络数据传输

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSString 字符串 操作 常用

//将NSData转化为NSString NSString* str [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];//将NSString 转化为NSData (NSString.h)- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding; //载一个字符串中删除一个字符或字符串[_di…

[HTML5]3D标签云

index.html <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <title>3D标签云</title> <link rel"stylesheet" type"text/css" href"http://webapplee-word…

正则表达式匹配字符串的问题

如何用正则表达式做模糊查询&#xff1f;&#xff1f; 是可以的比如“.*?name.*?”就可以匹配找出所有含有"name"的字符串&#xff0c;就像mysql查询用"where .. like %name%"一样的。并且正则可以更灵活&#xff0c;如果你写的".*?name\d{2}.*?&…

java.lang.IllegalStateException: attempt to re-open an already-closed object

这个错误出现的原因是因为我在一个数据库操作的时候&#xff0c;在循环读取数据的时候&#xff0c;把datebase给close了&#xff0c;会出现这样的错误&#xff0c;还有一直情况就是我们在写数据库操作的时候&#xff0c;需要调用到其它函数的相关操作&#xff0c;当其它函数操作…

sas常用选项

System options&#xff1a; obs&#xff1a;表示需要处理的最后一行observation&#xff0c;如果指定其为max&#xff0c;就表示处理到最后一条observation firstobs&#xff1a;表示需要从第几行observation开始处理&#xff0c;默认是1observation msglevel&#xff1a;默认…

我的2021年终总结:初为人父,从头再来

【年终总结】| 作者/Edison最近公司开始一股年终总结浪潮&#xff0c;看着同事们写大作文式的“内卷”总结&#xff0c;我不禁在想我这一年做了什么&#xff0c;那么也就有了这篇总结推文&#xff0c;当然它也是我每年的习惯。传送门&#xff1a;Edison的2020年终总结1也谈2021…

Java 基础【09】你的多继承纳?

Java省略了许多很少用到&#xff0c;缺乏了解&#xff0c;混淆功能的C &#xff0c;在我们的经验中带来更多的悲伤大于收益 。 -----James Gosling James Gosling 这个人大家应该很熟悉&#xff0c;就是最初设计Java 语言的的程序…

开源项目导入eclipse的一般步骤[转]

下载到开源项目后&#xff0c;我们还是希望导入到eclipse中还看&#xff0c;这样要方便点&#xff0c;一般的步骤是这样的 打开源代码目录&#xff0c; 如果看到里面有.calsspath .project文件&#xff0c;那么说明这个项目本来就是eclipse开发的&#xff0c;那么在eclipse中-&…

死锁活锁

死锁&#xff1a; 是指两个或两个以上的进程在执行过程中&#xff0c;因争夺资源而造成的一种互相等待的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的进程称为死锁进程。 由于资源…

说说可重复函数(Reentrant) 和线程安全(thread-safe)的区别与联系

在讲可重复函数与线程安全之前先来了解什么是可重复函数和线程安全。可重复函数&#xff1a;在多线程或有异常控制流的情况下,当某个函数运行到中途时,控制流(也就是当前指令序列)就有可能被打断而去执行另一个函数.而"另一个函数"很有可能是它本身.&#xff0c;如果…

inputn函数与input函数的区别

inputn函数与input函数的区别(这里的比较类似于前面的inputc函数) ①input函数可以将字符型变量转换为字符型或数值型&#xff0c;这取决于指定的输入格式informat&#xff1b;而inputn函数只能将字符型变量转换为数值型。从这个角度上看&#xff0c;跟inputc函数一样&#xff…

Blazor中的无状态组件

声明&#xff1a;本文将RenderFragment称之为组件DOM树或者是组件DOM节点&#xff0c;将*.razor称之为组件。1. 什么是无状态组件如果了解React&#xff0c;那就应该清楚&#xff0c;React中存在着一种组件&#xff0c;它只接收属性&#xff0c;并进行渲染&#xff0c;没有自己…

一次性撤稿70篇!中国学者论文再现大规模撤稿 | 附全名单

全世界只有3.14 % 的人关注了爆炸吧知识2021年1月20日&#xff0c;英国皇家化学学会&#xff08;Royal Society of Chemistry&#xff0c;简称RSC&#xff09;表示&#xff0c;他们正在考虑撤回68篇可能出自“论文工厂”的文章&#xff0c;但当时并没有公布这68篇文章的详情。近…

git代码库的使用

代码库/使用指南 http://learn.zone.jd.com/cmsuser/index.htm 在win7系统下使用TortoiseGit(乌龟git)简单操作GitOSC http://my.oschina.net/longxuu/blog/141699转载于:https://www.cnblogs.com/mssql8/p/3773995.html

二叉树前序、中序、后序遍历相互求法

今天来总结下二叉树前序、中序、后序遍历相互求法&#xff0c;即如果知道两个的遍历&#xff0c;如何求第三种遍历方法&#xff0c;比较笨的方法是画出来二叉树&#xff0c;然后根据各种遍历不同的特性来求&#xff0c;也可以编程求出&#xff0c;下面我们分别说明。 首先&…

搭建SVN服务

SVN版本管理工具管理着随时间改变的各种数据像普通文件服务器或者ftp服务器&#xff0c;但是&#xff0c;SVN会备份并记录每个文件每一次的修改记录Subversion官网&#xff1a;http://subversion.tigris.org/http://subversion.apache.org/svn客户端&#xff1a; http://tortoi…

linux awk命令总结

1. 除去重复项, 这个不多说, 只给出代码&#xff1a; awk !a[$0] file(s) awk !($0 in a){a[$0];print} file(s) 另一种&#xff1a;http://bbs.chinaunix.net/thread-1859344-1-1.html 2. 计算总数&#xff08;sum&#xff09;&#xff0c;如&#xff1a…

ubuntu环境下如何安装jdk,安装eclipse,安装android studio总结

1 安装jdk总结: 先下载ubuntu的jdk,然后解压,放入文件夹,然后在profile里面配置,关键命令如下 sudo gedit /etc/profile 然后加入以下配置 export JAVA_HOME=/usr/local/java/jdk1.6.0_30 export JRE_HOME=/usr/local/java/jdk1.6.0_30/jre export CLASSPATH=.:$JAVA_HOM…