• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

J2ME学习过程中的一点心得整理

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网  
  1. 关于MIDlet的生命周期

当MIDlet被应用程序管理器成功地初始化之后,就开始展开了它的生命周期。

基本上MIDlet有三个状态:停止状态(Paused),激活状态(Active)和消灭状态(Destroyed)。

 MIDlet的生命周期完全由应用程序管理器控制,只有当应用程序管理器认为MIDlet的状态必须改变时,才会调用相关函数。

MIDlet一开始一定是先进入停止状态,然后应用程序管理器再将他转换为激活状态,然后调用startApp()。

以激活状态来说,应用程序管理器先将MIDlet转换为激活状态,然后才调用startApp()。而应用程序管理器会先调用pauseApp()或destroyApp(),然后再将MIDlet转换为停止状态或消灭状态。这就是Active没有被动式(字尾没有加ed),而Paused和Destroyed都是被动式(字尾加ed)的真正涵义。

如果MIDlet自己调用这些函数,通常不会发生错误,但是也不会造成状态的改变(MIDlet的生命周期完全由应用程序管理器控制),只能当成一个单纯的函数调用而已。

startApp()每次从停止状态重新回到激活状态的时候都会被应用程序管理器调用。所以只需要被初始化一次的动作就不适宜放在startApp()中,应该用构造函数做初始化动作。

除了由应用程序管理器来控制MIDlet的生命周期之外,MIDlet本身也可以软性的决定自己的状态,但是不是自己来改变自己的状态,而是MIDlet先调用相对应的请求状态改变函数(resumeRequest()--请求激活,notifyPaused()--通知停止,notifyDestroyed()--通知消灭),这些函数会向应用程序管理器发出消息,请它来帮助改变状态,但是决定权在应用程序管理器,不保证一定可行。

由MIDlet自己调用请求状态改变函数与应用程序管理器要求改变状态,两者是不一样的。

以停止状态为例:应用程序管理器要求停止时,pasueApp()会调用,而MIDlet调用notifyPaused()时,pauseApp()不会被调用,但是两者都会使MIDlet进入停止状态,所以再MIDlet自己调用notifyPaused()时最好也先调用pauseApp()比较合适。同样的情况也发生在notifyDestroyed()和destroyApp()。除非是系统强制关闭MIDlet,否则最好MIDlet先调用destroyApp(),再调用notifyDestroyed(),请应用程序管理器帮我们将MIDlet转到消灭状态,最后结束MIDlet的运行。单单MIDlet自己调用destroyApp()是没用的。

从这里我们可以看出startApp(),pauseApp()以及destroyApp()并非控制MIDlet生命周期的函数,它们只是一个提供我们初始化资源释放资源的地方而已!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网