上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.1 Client/Server通过IPC的通信流程图
我们知道一般Android中很多通信是通过Binder机制来完成的,对于MediaPlayer和MediaPlayerService来说也不例外。我们通过图3-1来看看它们是如何通信的。
图3-1 MediaPlayer和MediaPlayerService通过Binder通信
从图3-1中可以总结出如下几点。
• MediaPlayer是客户端,也就是我们所说的C/S模型中的C端,即Client。
• MediaPlayerService和MediaPlayerService::Client是服务器端,也就是我们所说的C/S模型中的S端,即Server端。
• MediaPlayerService实现IMediaPlayerService定义的业务逻辑,其主要功能是根据MediaPlayer::setDataSource输入的URL调用create函数创建对应的player。
• MediaPlayerService::Client实现IMediaPlayer定义的业务逻辑,其主要功能包括start、stop、pause、resume……其是通过调用MediaPlayerService create的player中的对应方法来实现具体功能的。
• 通过Transact函数可以向远端的IBinder对象发出调用,通过onTransact函数可以使你自己的远程对象能够响应接收到的调用。