![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
跨进程通信
文章平均质量分 89
PYJTLK
这个作者很懒,什么都没留下…
展开
-
Android跨进程通信(五):Messenger源码解析
前面的文章我们学会了如何使用Messenger进行跨进程通信。本篇文章我们来探究一下Messenger源码。Messenger创建Messenger有两种构造方法,第一个是传入Handler,它是服务端的创建方式。第二个是传入IBinder,它是客户端的创建方式。首先来看第一种创建方式。Messenger内部有一个IMessenger成员变量,它是由Handler获取的。//Messenger.javapublic final class Messenger implements Parcelab原创 2022-02-02 00:27:20 · 1803 阅读 · 0 评论 -
Android跨进程通信(四):AIDL源码解析
本篇文章是AIDL的源码解析,不了解AIDL的朋友可以看看使用教程,熟悉了基本的使用后再来阅读本文章。阅读本文章的时候,把服务端和客户端的工程都打开结合着它们来一同分析。接口代码总览在我们编写AIDL并成功编译后,工程里便会自动生成一个Java接口文件。首先来总览这个文件,红色框的方法就是AIDL文件里声明的方法。文件里还有一个Stub静态内部抽象类,它implements了此Java接口(蓝色框),也就是说它或它的子类要把AIDL声明的方法给实现了。来看看Stub类。红色框说明Stub类继承自B原创 2022-02-01 18:38:05 · 1382 阅读 · 0 评论 -
Android跨进程通信(三):Messenger使用教程
前面的文章讲述了如何通过AIDL来实现Android的跨进程通信,本篇文章来讲解如何使用Messenger来实现同样的功能。介绍Messenger是AIDL的封装,进程可以通过Messenger来实现通信。直接编写AIDL相当复杂,而Messenger大大简化了编写流程。下面先介绍Messenger的基本使用方法。准备工作创建Messenger对象需要传入一个Handler,在这个Handler里对接收到的数据进行处理。Handler handler = new Handler(){ @Ove原创 2022-02-01 14:48:00 · 2830 阅读 · 1 评论 -
Android跨进程通信(二):AIDL使用教程2
上一篇文章讲述如何编写服务端的代码,本篇文章讲解客户端代码的编写,并测试两程序的进程间通信。编写客户端的AIDL代码上篇文章也说过AIDL对包名要求很苛刻,因此在编写的时候要格外注意。首先,切换为Project模式。在main文件夹上创建一个新文件夹,一定要叫aidl。按照下面这种方式创建一个aidl文件,然后不管它(这是为了解决Android Studio的一个"小"bug),这个步骤不能漏。接着把服务端的aidl包一整个复制到客户端的aidl下。复制后,客户端的aidl文件夹如下,原创 2022-01-29 23:38:08 · 1840 阅读 · 0 评论 -
Android跨进程通信(一):AIDL使用教程1
介绍本篇文章将讲述Android AIDL的基本使用。AIDL叫Android接口定义语言,是用于辅助开发者完成Android跨进程编程的工具。下面将通过两个Android应用来讲解如何使用AIDL来完成跨进程编程。先来介绍一下这两个应用的场景。第一个应用是传感器应用,能够侦测收集温度数据(模拟场景),并提供温度检测的Service,也就是说这个应用是服务提供方。第二个应用则是客户端,它能够绑定第一个应用的温度侦测服务,显示当前手机温度。编写服务端AIDL代码先创建一个空白工程,名字就叫Sensor原创 2022-01-29 23:36:34 · 2954 阅读 · 0 评论