[发明专利]Applet托管对象的方法无效
申请号: | 200910045926.1 | 申请日: | 2009-01-22 |
公开(公告)号: | CN101788905A | 公开(公告)日: | 2010-07-28 |
发明(设计)人: | 宋世军;陈榕 | 申请(专利权)人: | 上海科泰世纪科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/46 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 201203 上海市张江高*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | applet 托管 对象 方法 | ||
技术领域
本发明是关于一种在计算机构件编程时托管对象的方法,尤其是指在通过Applet线程模型托管对象的方法。
背景技术
Elastos平台上进行CAR构件编程时,通过引用计数管理对象的生命周期,当不再使用一个对象时,要通过调用Release方法释放对对象的引用。但有的时候所使用的对象的生命周期要比当前线程还要长,可能在整个Applet的运行过程中都需要访问它,但又只在Applet内部使用,并且当Applet结束以后就不再需要它。如果创建这个对象的线程是Applet的主线程(Main),那么可以利用“线程托管对象”的方式将对象托管到Main线程上,因为Main线程的生命周期与Applet一样,可以保证该对象一直有效。但如果只是在一个普通线程上创建的对象,这时就比较麻烦,可以将这个对象的指针传递给Main线程,由其代为管理,或者注册Applet结束事件的回调函数,在回调函数中清理这个对象。但这些手段对用户来说都比较繁琐,如果要托管的对象很多,又可能由不同线程或者代码,甚至第三方的代码来创建的等等,都会带来操作复杂、很容易出错。
发明内容
鉴于以上内容,有必要提供一种Applet托管对象的方法。
该Applet托管对象的方法包括步骤:在Applet的主线程上创建一个类对象;在该类对象上实现一个托管对象链表;当Applet创建一个新对象时,将该新对象托管到该创建它的Applet的主线程上;根据该Applet的句柄将该新对象的指针插入到该托管对象链表;当Applet运行结束时,释放该类对象,进入该类对象的析构函数;在该类对象的析构函数里遍历该托管对象链表,并调用所有被托管对象的Release方法。
本发明Applet托管对象的方法提供一个托管API(应用编程接口),用户可以通过该托管API将对象托管给创建该对象的Applet,当Applet结束退出时自动调用这个对象的Release方法。利用该方式,用户不必担心对象会被提前释放,也不必实现任何多余的代码,只需要调用API托管对象即可,具有使用方便、代码清晰简洁、提高程序稳定性的优点。
附图说明
图1是本发明较佳实施例的Applet托管对象的方法的流程图。
图2是本发明Applet Main线程和类对象CAutoRelease及托管对象链表之间的关系示意图。
具体实施方式
如图1所示,是本发明较佳实施例的Applet托管对象的方法的流程图。
步骤S200,在Applet的主线程(Main)上创建一个类对象CAutoRelease,并在该Applet上保留该类对象CAutoRelease的对象指针。该类对象CAutoRelease用于管理被托管的对象。
步骤S202,在这个创建的类对象CAutoRelease上实现一个托管对象链表。
参照图2所示,其中Main1是Applet的主线程,类对象CAutoRelease10是在该Main1上创建的用于管理被托管对象的一个类对象CAutoRelease,托管对象链表11是在该类对象CAutoRelease上实现的一个托管对象链表。
例如用下面一段程序代码(AA)实现上述功能:
Class CAutoRelease//用于管理被托管的对象
{……}
Applet TFoo{
Public:
CAutoRelease *m_pAutoRelease;//在Applet上保留一个
CAutoRelease的对象指针
}
TFoo::AppletRoutine(…)//Applet的Main线程
{
m_pAuRelease=new CAutoRelease;//在Applet主线程上创建
一个CAutoRelease对象
……;//执行Applet的其它操作直到准备退出Applet
delete m_pAutoRelease;//准备退出Applet,清理托管对象
……
}
通过上述步骤S200和S202,本发明实现了Applet线程上的托管API(Application Programming Interface,应用编程接口)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海科泰世纪科技有限公司,未经上海科泰世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910045926.1/2.html,转载请声明来源钻瓜专利网。