Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper
Posted yarightok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper相关的知识,希望对你有一定的参考价值。
前面两片文章讲解了通过AIDL和Messenger两种方式实现android IPC。而本文所讲的并不是第三种IPC方式,而是对前面两种方式进行封装,这样我们就不用直接把Aidl文件,java文件拷贝到客户端了,而是为客户端提供一个aar(Anroid Archive)包。通过这个aar包对AIDL或者Messenger进行封装,最终客户端就可以像调用一般的java类一样,而不用处理通信方面的内容。(实际上书中说是要打包成jar包,但是在新建的Java Library Module中,我没能成功的创建Aidl文件,最后选择了aar。如何创建aar,请阅读:Building an AAR Library in Android Studio)。
本文不再对代码进行解释,如果不清楚请先阅读:
Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- AIDL
Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- Messenger
本文示例代码下载地址:
Service:https://github.com/ldb-github/WrappedAidlService
Client:https://github.com/ldb-github/WrappedAidlClient
服务端:
项目包括了两个Module:
app Module是服务所在。
wrappedaidl Module是一个Android Library,最终这个Module生成aar包,提供给客户端。这个模块实际就是把原来在客户端中与服务端进行通信的代码封装了起来。
这个项目中包含了Aidl 和 Messenger 两种方式。其中:
ApiWrapper是对Aidl方式的封装。
ApiWrapperByMessenger是对Messenger方式的封装。
为了能够回调客户端,增加了一个回调接口ApiCallback,ApiWrapper或者ApiWrapperByMessenger会在通信的不同时期调用相应的回调方法把消息传递给客户端。
客户端:
这样客户端就不用直接拷贝服务端的文件,而是添加aar包:
同时还得修改模块的build.gradle文件:
这样就可以在客户端使用ApiCallback,ApiWrapper 和 ApiWrapperByMessenger了。
客户端UI:
以上是关于Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper的主要内容,如果未能解决你的问题,请参考以下文章
如何从 java 代码为 android 应用程序配置 Pushwoosh
如何使用 Socket Programming 连接 Android 设备?
Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- AIDL
Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- Messenger