理解J2ME应用模型之MIDlet Model

来源:互联网 发布:mac 提升用户权限 编辑:程序博客网 时间:2024/06/04 18:17

原文地址:http://developers.sun.com/mobility/midp/articles/models/

 

The MIDlet ModelMIDlet 模型

MIDlet是一种MIDPMobile Information Device Profile)应用。和applet相似,MIDlet是一种可管理的应用。不过,它不采用web 浏览器的管理方式,而是采用内置在设备中的有特殊用途的应用管理软件进行管理,常见的有内置在手机、双面打印机的管理程序。应用的外部事件管理也有很重要的意义,因为应用可能随时中断外部的事件。外部事件的影响很小,比如一个运行着的阻止用户接听来电的应用(可以阻止外部来电)。

MIDlet 模型同样被PDAPPersonal Digital Assistant Profile)支持,使模型对PDAlets的支持得到了扩展,对我们而言,这两种模型是对等的(MIDletPDAlets)。

The MIDlet Life-CycleMIDlet生命周期

一个MIDlet的主类继承javax.microedition.midlet.MIDlet类,主类定义了3个通知生命周期的方法,startApp(), pauseApp(),destroyApp()

在一个MIDlet生命周期中,有如下3中可能的状态:

Paused 停止:一个MIDlet已经被构造,但是处于无效状态

Active 有效:有效运行的状态

Destroyed 销毁:MIDlet已经被终止,等待垃圾回收器清理

注意,MIDlet没有一个类似于applet 已加载的状态,因为MIDlet没有初始化方法,通常来说,MIDlet在开始调用startApp方法时自动初始化。

MIDletAMS创建(application-management software),AMS通常以响应用户请求。例如,AMS将列出系统中安装的所有MIDlet供用户选择。

MIDlet初始状态为paused。和applet类似,Midlet在构造函数中可以做少部分或者不做初始工作,因为运行环境还没有被设定好。

在构造函数之后的某个点,AMS激活MIDlet并调用startApp()方法。在做完所有的初始化工作之后,startApp()创建并且显示应用的用户界面。从startApp()返回之后,MIDlet的状态由paused变成active。如果MIDlet由于某些原因不能完成初始化,将抛出javax.microedition.midlet.MIDletStateChangeException,并立刻变为destroyed状态。

每当从active状态转换到paused状态会发生钝化(Deactivation),MIDLet还没有被销毁,不过会尽可能多的释放资源。如果钝化由AMS引发,则会调用pauseApp()方法。如果钝化由MIDlet自身利用运行上下文引发,则不会调用。

每当从active或者paused转换到destroyed状态会发生析构(Destruction)。如果析构是由AMS引发,则会调用destroyApp()方法。传到方法中的boolean型参数将区分析构是无条件进行还是按照设置进行。MIDlet可以抛出一个MIDletStateChangeException,进而阻止按照设置进行的析构。如果析构由自身引发,不会调用destroyApp()方法。

        一个基本的MIDlet代码如下:

 

 

 

      和BasicMIDlet 类有所区别, BetterMIDlet定义了一个initApp()方法来进行一次性初始化(在第一次调用startApp()时被调用),一个exitApp()方法使资源统一清理。

原创粉丝点击