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

举报
chenyu 发表于 2021/07/27 00:29:56 2021/07/27
【摘要】 Android 里面的两个APK通信的方式有哪些? 自己网上查了查,总结了一下: 1. 广播,最简单的方法,这个实现起来比较简单 2. AIDL,功能强大,支持一对多并发通信,支持实时通信。 3. 网上一个人写的: 思路     通过apk1调用apk2的services,   在onServiceConnected的时候返回apk2中的自定义IBinder对象,...

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,功能强大,可以通过网络传输字节流,支持一对多并发实时通信,适用于网络数据传输

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/51882373

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。