首页 > 代码库 > cling的异步操作
cling的异步操作
cling 2.x API看上去只改了包名和个别类名但却已经完整支持了异步操作。下面的片段验证了一个异步过程,Android程序调用远程UPnP设备(PC Windows MediaPlayer媒体渲染器)的AVTransort服务执行一个Seek操作。手机和PC均连接家用局域网
上图代码中refUpnpService是的UPnP协议栈,refDevAVT是远程设备的AVTransport服务,act是一个Seek。
Seek成功与否的信息返回封装在了act的回掉中,如下图的代码
附注 1,cling为什么把Seek等一些class封装在support库里,因为Seek包含一些DLNA层面的数据解析,而cling core主要是UPnP。 2,另外为什么复杂不可预料的网络操作没有 "time out" 返回项,因为UPnP协议规范处理了网络异常,这个状况列为failure而且有详细信息。 |
在执行Seek之前有一句"before seek",执行玩Seek之后有一句"after seek",操作的结果的会有一句"seek succeeded"或"seek failed"
同步的话log信息将是:"before seek" ->(调用线程阻赛直到操作完成)"seek succeeded" 或 "seek failed" -> "after seek"
异步的话log信息将是:"before seek" ->(调用线程不阻赛直接返回)"after seek"->"seek succeeded" 或 "seek failed"
下面是Android程序的UI操作SeekBar(松开后执行一次Seek),通过UPnP将远程媒体渲染器Windows MediaPlayer的时间跳到02:05,远程渲染器响应了请求Seek到02:05
Android Studio的Log信息指明cling库已经做了异步处理,即调用Seek后直接返回,100多毫秒后服务器返回Seek成功。
cling的异步操作