用于支持访问活动对象的方法和系统技术方案

技术编号:2836563 阅读:170 留言:0更新日期:2012-04-11 18:40
提供一种方法和系统用来允许Java↑[TM]应用程序通过Java↑[TM]本地接口(JNI)利用Symbian↑[TM]平台上的活动对象。在Symbian↑[TM]下启动活动的调度程序,并且在第一次调用以后将它转换成独立的线程。尽管该调度程序在重新启动的时候仍然会发生阻塞,但是由于它是在一个独立的线程中执行的,因此,控制能够返回到进行调用的Java↑[TM]应用程序来允许使用其它的活动对象。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及如何在计算平台之间访问活动对象,特别涉及但不限于一种方法,用于通过JavaTM本地接口(JNI)为JavaTM应用程序提供到SymbianTM操作系统环境中活动对象的访问,从而允许控制返回到进行调用的JavaTM应用程序。SymbianTM是智能电话的全球工业标准OS(操作系统)。在图1中原理性地说明一个智能电话1实例。智能电话是具有高级功能的移动电话,除了常见的通信功能以外,它通常还支持电子邮件和高级浏览功能。它还可以有照相机2。SymbianTM操作系统大部分是用面向对象的计算机语言C++编写的。面向对象的语言通常都提供一些多任务手段。例如,JavaTM语言,另一种众所周知的面向对象语言,主要通过多线程来支持多任务功能,这种多线程允许在多个不同的线程中同时执行多个任务。SymbianTM操作系统支持抢占式多线程,因此它能够同时运行多个应用程序和服务程序。在一个线程中,用活动对象来提供非抢占式多任务支持,这就使得对于多数应用程序和服务程序而言不再需要多线程编程。大量的SymbianTM类是从活动对象基类CActive导出的。可以将活动对象定义为在它自己的控制线程中运行的对象。在SymbianTM操作系统中,活动对象是从基类CActive导出的任意对象。在图2中示意性地说明SymbianTM操作系统中线程和活动对象之间的关系。系统调度程序10在多个线程11、12、13之间支持抢占式多线程功能。抢占式多线程指的是给每个线程一个固定的CPU时间片,在这个时间片之后将它挂起,从而使下一个线程能够运行。通过足够频繁地在线程之间进行切换,能够产生线程是连续执行的这样一个错觉。相反,在线程11中,可能有多个活动对象20、21、22。每个线程都可以有一个活动的调度程序25,用于在活动对象之间调度CPU时间。活动的调度程序25采用非抢占式方法,意思是不挂起正在执行的活动对象,而是允许完成它的任务,并将控制返回给活动的调度程序。SymbianTM操作系统为了支持上述活动对象方式而禁用上述多线程方式。在这个操作系统中,编写支持协作活动对象系统的程序,比编写支持协作线程系统的程序更加容易。线程之间的通信比活动对象之间的更慢,也更加困难,并且活动对象的运行时间成本明显低于线程的运行时间成本。此外,从处理器工作负荷的角度看,产生和销毁活动对象的效率远远高于产生和销毁线程的效率。因此,SymbianTM应用程序通常都使用包含单个线程的过程,在这个线程中具有多个活动对象。由于在计算平台之间的可移植性,JavaTM语言已经应用非常广泛,非常流行,特别是对于GUI(图形用户界面)的开发。因此,常常将JavaTM用于为SymbianTM平台开发应用程序,这样做提供了一种JavaTM实现。但是,为了保持其可移植性,没有将JavaTM设计成直接使用较低级的设备功能,例如,访问照相机、蓝牙或红外设备的设备驱动程序。JavaTM访问这种本地功能的常见方法是通过JavaTM本地接口(JNI)31,它在JavaTM环境30和本地SymbianTM环境32之间提供“翻译层”,如图3所示。但是,在其SymbianTM实现中,没有将JNI31设计成与活动对象相互作用。考虑到用活动对象代替线程所获得的技术优点,有必要允许JavaTM程序访问SymbianTM操作系统中的活动对象。本专利技术的实施例提供一种机制,用来支持通过JNI从JavaTM访问活动对象。具体而言,可以将本专利技术应用于一个计算平台上的应用程序不能直接访问第二计算平台上活动对象的任意环境。本专利技术提供一种支持从第一计算平台访问第二计算平台上活动对象的方法,该方法包括从所述第一计算平台上的应用程序接受函数调用;响应所述函数调用,启动所述第二计算平台上第一控制线程中活动的调度程序,该活动的调度程序用于为来自所述活动对象的请求提供服务;在所述第二计算平台上创建第二控制线程;以及将所述活动的调度程序转换成所述第二线程来允许控制返回到所述进行调用的应用程序。所述活动的调度程序可以是响应来自活动对象的请求而转换的,或者是响应来自启动起来用于转换所述活动的调度程序的定时器对象而转换的。该方法可以包括判断来自所述活动对象的请求是不是多个请求中第一个请求的步骤,并且只有在这种情况下,才将所述活动的调度程序转换成独立的线程。判断所述请求是不是第一个请求可以利用状态机来完成。本专利技术还提供一种支持从第一计算平台访问第二计算平台上活动对象的系统,该系统包括用于从所述第一计算平台上的应用程序接受函数调用的装置;用于响应所述函数调用,启动所述第二计算平台上第一控制线程中活动的调度程序的装置,该活动的调度程序用于为来自所述活动对象的请求提供服务;用于在所述第二计算平台上创建第二控制线程的装置;以及用于将所述活动的调度程序转换成所述第二线程来允许控制返回到所述进行调用的应用程序的装置。所述转换装置可以包括用于停止所述第一线程中活动的调度程序的装置以及用于在所述第二线程中重新启动该调度程序的装置。本专利技术还提供一种用于支持从第一计算平台访问第二计算平台上活动对象的计算机程序,在计算机上执行的时候,该程序被配置成从第一计算平台上的应用程序接受函数调用;响应所述函数调用,启动第二计算平台上第一控制线程中活动的调度程序,该活动的调度程序用于为来自所述活动对象的请求提供服务;在所述第二计算平台上创建第二控制线程;以及将所述活动的调度程序转换成所述第二线程来允许控制返回到所述进行调用的应用程序。下面将参考附图说明本专利技术的示例性实施方式。在这些附图中图1原理性地说明能够实现本专利技术的实例的智能电话;图2原理性地说明JavaTM应用程序如何与图1所示智能电话的操作系统进行通信;图3说明SymbianTM操作系统环境中活动对象和线程之间的关系;图4是说明本专利技术的原理的流程图;以及图5是说明用于实现本专利技术的程序的结构的结构示意图。如上所述,在SymbianTM操作系统中,活动对象(AO)需要运行能够为它们的请求提供服务的活动的调度程序(AS)。几乎所有的线程都使用活动的调度程序。如果有活动的调度程序,就能够根据需要给它增加活动对象以及从它去除活动对象。由于在JNITM下没有任何活动的调度程序存在,因此需要人工启动活动的调度程序。虽然在SymbianTM操作系统的CActiveScheduler类中提供了这一功能,但是为了启动这个调度程序而对这一类中定义的Start()函数的调用则被阻塞。这就意味着对本地(SymbianTM操作系统)函数的调用不会返回JavaTM调用程序,不能进行任何进一步的处理。利用下面描述的机制,能够避免这种情况。与上述方法相反,启动活动的调度程序,从而使得控制能够返回到JavaTM应用程序,能够进一步向活动对象发出请求以及接受来自活动对象的请求。简而言之,向活动的调度程序发出第一个请求的时候,将活动的调度程序转换成一个单独的线程。可以从正在使用的活动对象或者从只为这一目的启动的定时器对象来启动。在图4中说明实现这一方案的程序。参考图4,JavaTM程序调用SymbianTM操作系统中的本地函数(步骤s1)。本地函数对本地SymbianTM中活动的调度程序25(步骤s2)和活动对象20(步骤s3)进行初本文档来自技高网...

【技术保护点】
一种从第一计算平台(30)访问第二计算平台(32)上活动对象(20、21、22)的方法,该方法包括:从所述第一计算平台上的应用程序(40)接受函数调用;响应所述函数调用,启动所述第二计算平台上第一控制线程(11)中活动的调度 程序(25),该活动的调度程序用于为来自所述活动对象的请求提供服务;在所述第二计算平台上创建第二控制线程(12);以及将所述活动的调度程序转换成所述第二线程以允许控制返回到所述进行调用的应用程序。

【技术特征摘要】
【国外来华专利技术】GB 2004-12-8 0426884.31.一种从第一计算平台(30)访问第二计算平台(32)上活动对象(20、21、22)的方法,该方法包括从所述第一计算平台上的应用程序(40)接受函数调用;响应所述函数调用,启动所述第二计算平台上第一控制线程(11)中活动的调度程序(25),该活动的调度程序用于为来自所述活动对象的请求提供服务;在所述第二计算平台上创建第二控制线程(12);以及将所述活动的调度程序转换成所述第二线程以允许控制返回到所述进行调用的应用程序。2.如权利要求1所述的方法,其中响应来自活动对象的请求来转换所述活动的调度程序。3.如权利要求2所述的方法,其中所述活动对象是为了转换所述活动的调度程序而启动的定时器对象。4.如权利要求2或3所述的方法,包括判断来自所述活动对象的请求是不是多个请求中第一个请求的步骤。5.如权利要求4所述的方法,包括只有在所述请求是第一个请求的情况下,才将所述活动的调度程序转换成所述第二线程。6.如权利要求4或5所述的方法,包括利用状态机来判断所述请求是不是第一个请求。7.如以上权利要求中任意一个所述的方法,其中转换所述活动的调度程序的步骤包括停止所述第一线程中活动的调度程序,并且在所述第二线程中重新启动它。8.如以上权利要求中任意一个所述的方法,其中所述活动对象包括在它自己的控制线程中运行的对象。9.一种支持从第一计算平台(30)访问第二计算平台(32)上活动对象(20、21、22)的系统,该系统包括用于从所述第一计算平台上的应用程序(40)接受函数调用的装置;用于响应所述函数调用,启动所述第二计算平台上第一控制线程(11)中活动的调度程序(25)的装置,该活动的调度程序用于为来自所述活动对象的请求提供服务;用于在所述第二计算平台上创建第二控制线程(12)的装置;以及用于将所述活动的调度程序转换成所述第二线...

【专利技术属性】
技术研发人员:S雷曼
申请(专利权)人:皇家飞利浦电子股份有限公司
类型:发明
国别省市:NL[荷兰]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1