Android 进程间通信方式总结
来源:互联网 发布:小米域名多少钱买的 编辑:程序博客网 时间:2024/05/29 08:30
首先,我们要知道什么是进程。
在 Android 里面,进程是一组组件的集合。默认下,同一个应用的所有组件都运行在同一个进程中并且大多数程序不必改变这一状况.然而,如果你非要与众不同,也可以通过修改 AndroidManifest.xml 文件中修改四大组件 ( activity , service , receiver 和 provider ) 的 process 属性来指定该组件运行在哪一个进程里。
由于 Android 本身设计的原因,进程间的数据是无法直接共享的,如果我们需要知道不同进程间的一些数据,就需要进行进程间通信操作。下面总结了以下进程间通信的一些方法。
1 Activity
我们经常写类似的代码
Intent intent = new Intent();intent.setClassName("otherpackage","OtherActivity");intent.putExtra("key","value");startActivity(intent);
在 OtherActivity 里面
String value = getIntent().getStringExtra("key");
这样我们就通过 Intent 把数据共享给了 OtherActivity .
2 Broadcast
广播,通过发送端发送一个广播,接收端接收这个广播就可以实现跨进程通信,也是利用了 Intent 可以携带额外数据。
Intent broadcast = new Intent("my.broadcast.action");broadcast.putExtra("key","value");sendBroadcast(broadcast);
3 Content Provider
相信这个大家用的也不少,比如获取一个联系人的详情。联系人的详情时存在系统里面的,我们的应用一定不会和系统程序在一个进程,Content Provider 很明显就是一个跨进程通信的方法。
4 AIDL
AIDL 相信大家或多或少都接触过。 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。AIDL 在 2 个应用之间应用才有意义。一个 app 里面没有必要用。这里不做详细的介绍,具体的做法可以参考这篇文章 Android:学习AIDL,这一篇文章就够了(上)。
5 Messnger
This allows for the implementation of message-based communication across processes
允许实现基于消息的进程间通信的方式。具体如何做呢。
可以看到,我们可以在客户端发送一个Message给服务端,在服务端的handler中会接收到客户端的消息,然后进行对应的处理,处理完成后,再将结果等数据封装成Message,发送给客户端,客户端的handler中会接收到处理的结果。
具体的分析请看这篇介绍 Messnger 。
6 文件
是的,你没看错,就是文件,通过读写同一个文件的确是可以做到进程间通信的。
好了,先写到这里。
- Android 进程间通信方式总结
- 进程间通信方式总结
- 进程间通信方式总结
- 进程间通信方式总结
- Android进程间通信方式总结(IPC)
- Android中进程间通信(IPC)方式总结
- Android中进程间通信(IPC)方式总结
- Android中进程间通信(IPC)方式总结
- Android进程间通信方式
- 进程通信方式总结
- 进程通信方式总结
- 进程间、线程间通信方式总结
- 进程间、线程间通信方式总结
- 进程间、线程间通信方式总结
- linux 进程间通信方式总结
- 进程间的通信方式总结
- windows进程间通信方式总结
- 进程间通信的方式总结
- GestureDetector中onFling()与onScroll()的区别
- Get请求iOS编码NSUTF8StringEncoding(%转%25) 问题
- 【demo积累】——真分页查询
- mac 下git命令自动补全
- OpenProcess函数
- Android 进程间通信方式总结
- Android静默安装实现方案,仿360手机助手秒装和智能安装功能
- Oracle常用命令
- 【数组4】数字在排序数组中出现的次数
- java Comparator 勘误
- 在eclipse中利用Lodop进行条码打印
- 记录学习的点滴(MyEclipse10+SSH搭建问题总结)
- Android SharedPreferences的使用
- UVa 11134 Fabled Rooks(贪心+优先队列)