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成功。

时间: 2024-10-11 11:27:21

cling的异步操作的相关文章

异步委托(APM)使用Func异步操作,处理耗时操作

使用委托进行异步操作,处理一些耗时操作,防止主线程阻塞 使用例子: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Demo 7 { 8 class Program 9 { 10 11 static void Main(string[] args) 12 { 13 Func<string> fun = new Func<s

异步操作

看了关于异步操作的内容,其中有创建新的线程,现在正在看AsyncTask进行更加方便的异步操作. 之所以学习异步操作这一块,是因为,当进行在线查词的时候需要连网,但是连网貌似不能和主线程一起实现,所以需要异步操作. 不不知道是否正确,先看了再说. 现在准备是把xml解析弄懂,然后这个异步操作会实现,最后需要解决的就是怎么获取金山词霸的词库数据也就是xml文件吧!! 加油, 再次附上异步操作视频链接: http://www.jikexueyuan.com/course/189_2.html?ss=

Android异步操作总结

Android中经常会有一些操作比如网络请求,文件读写,数据库操作,比较耗时,我们需要将其放在非UI线程去处理,此时,我们需要处理任务前后UI的变化和交互.我们需要通过类似js中异步请求处理,这里总结我所了解到的,方便自己记忆,也方便别人的浏览. AsyncTask new AysncTask().execute(); AsyncTask会按照流程执行在UI线程和一个耗时的任务线程. (1) onPreExecute() 执行预处理,它运行于UI线程,可以为后台任务做一些准备工作,比如绘制一个进

异步操作AsycnTask类

1.  首先执行onPreExecute方法,进行UI的初步设置 2.  其次执行doInBackground方法,此时将不在UI中线程中进行了 3.  然后如果要进行中的数据的话可以通过publishProgress(param)方法进行传递 4.  再就是onProgressUpdate接收publishProgress()传递过来的参数了,可以对UI进行操作 5.  最后就是onPostExecute()方法接收doInBackground()返回的数据对UI进行操作 异步操作AsycnT

Android项目----AsyncTask异步操作

public abstract class AsyncTask extends Object java.lang.Object    ? android.os.AsyncTask<Params, Progress, Result> Class Overview AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish

es6异步操作

异步编程对 JavaScript 语言太重要.JavaScript 只有一根线程,如果没有异步编程,根本没法用,非卡死不可. ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 ES6 将 JavaScript 异步编程带入了一个全新的阶段. 基本概念 异步 所谓"异步",简单说就是一个任务分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段. 比如,有一个任务是读取文件进行处理,任务的第一段是向操作系统发

Android UPnP/DLNA 应用以及cling 2.1.1依赖库

UPnP(通用即插即用 openconnectivity.org/resources/specifications/upnp)是一套网络协议制定的技术标准,允许智能设备(如个人计算机.智能电视.手机.网关)在网络中相互发现并建立对等的网络连接,可用于数据共享,通信和娱乐. UPnP 使用的上层协议/规范有:SSDP(简单设备发现协议).HTTP.SOAP(简单对象访问协议).XML. 很多路由器的NAT穿透的即是通过 UPnP 实现的,路由器将自身描述为 Internet Gateway 设备,

谈一谈几种处理 JavaScript 异步操作的办法

本文标签:   JavaScript 原生JavaScript优势 JavaScript异步 js的异步操作 回调函数 TensorFlow REST   服务器 引言 js的异步操作,已经是一个老生常谈的话题,关于这个话题的文章随便google一下都可以看到一大堆.那么为什么我还要写这篇东西呢?在最近的工作中,为了编写一套相对比较复杂的插件,需要处理各种各样的异步操作.但是为了体积和兼容性,不打算引入任何的pollyfill,甚至连babel也不允许使用,这也意味着只能以es5的方式去处理.使

Javascript async异步操作库简介

异步操作知识 在js世界中, 异步操作非常流行, nodejs就是特点基于异步非阻塞. js语言支持的异步语法包括, Promise  async await generator yield. 这些语法需要使用者了解非常清楚, 往往很困难. 下面介绍一个异步操作的超级库,可以实现很多异步操作和流程控制. async库 http://caolan.github.io/async/index.html Async is a utility module which provides straight