`
hu1010
  • 浏览: 23796 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

j2me中的MIDlet类说明

阅读更多

在J2ME编程过程中,MIDlet是最核心的类之一,熟悉该类的使用是J2ME学习过程中必须首先掌握的类,下面就结合实际介绍一下该类的实际使用。

众所周知,J2ME程序都是从MIDlet类开始执行,系统规定了MIDlet的生命周期。规定MIDlet程序有三种状态:

1、 暂停状态

2、 运行状态

3、 销毁状态

系统在执行MIDlet程序时,首先构造一个MIDlet类型的对象,然后使程序进入到暂停状态,按照生命周期的规定,系统会自动调用MIDlet对象的startApp方法使程序进入到运行状态,开始程序的执行。如果在创建MIDlet对象的过程中,或者是调用startApp的方法中发生了异常,则系统会自动调用MIDlet对象的destroyApp方法进行到销毁状态,也就是使程序退出。

所以生命周期中的第一个需要注意的地方就是熟悉在以上状态转换过程中,系统会自动调用的方法,然后在实际编写MIDlet类的时候,在这些方法中书写合适的代码,这样就可以在系统规定的状态转换时,自动调用这些方法。

另外一个需要说明的状态是暂停状态,系统在程序运行过程中,如果手机有来电,则系统会自动的使MIDlet程序进行到暂停状态,在进入到暂停状态以前,系统会自动调用MIDlet对象的pauseApp方法。当电话接听完毕以后,系统会自动使 MIDlet程序进行到运行状态,在进入到运行状态以前,系统还会自动调用startApp方法使系统进入到运行状态。

对于上面的内容做一个简单的总结:

1、 startApp方法

在系统第一次运行的时候,系统会自动调用该方法使系统进入到运行状态。

当系统从暂停状态切换到运行状态以前,系统也会自动调用该方法。

2、 pauseApp方法

当系统从运行状态切换到暂停状态以前,会自动调用该方法。

3、 destroyApp方法

当系统发生异常退出程序以前,会自动调用该方法。该方法有一个boolean类型的参数,如果该参数为true则代表该方法必须清理和释放资源,如果为false可以抛出一个MIDletStateChangeException异常来表明它不想立即退出。

熟悉了这几个方法的使用以后,可以实现很多实用的功能,下面介绍两个实际功能的实现:

1、 实现来电话时暂停的功能

在实际的MIDlet编程中,必须实现手机来电时暂停程序的功能,如果有线程时,还需要把线程停止掉,然后当电话结束以后,重新显示界面,并重新启动线程。

startApp方法的具体的实现代码框架如下:

public void startApp() {
    //获得当前显示的界面
    Displayable curr = display.getCurrent();
    //判断是否是第一次运行
    if (curr == null) {
        //显示第一个界面,例如logo界面
    } else {
        //显示来电以前的界面
        display.setCurrent(curr);
        //如果需要,还可以启动线程
    }
}

如果游戏界面中有线程,则需要在来电时暂停线程,而pauseApp在暂停以前会被系统调用,所以可以在pauseApp方法中实现该功能。pauseApp方法的实现代码框架如下:

public void pauseApp() {
    //获得当前显示的界面
    Displayable curr = display.getCurrent();
    //判断是否是游戏界面
    if (curr instanceof GameCanvas) {
        //停止线程
    }
}

      2、 实现按挂机时清理的功能

熟悉MIDlet编程的人都知道,在程序运行过程中按挂机键,可以使MIDlet程序退出,在低级用户界面编程中,可以在keyPressed方法中捕获该事件,但是却无法处理,因为捕获以后,程序就直接退出了。

如果游戏中有背景音乐等,则当按挂机键直接退出的时候,音乐还会存在,这样就会造成很多的问题。但是按挂机键以后,在程序退出以前,系统会自动调用destroyApp方法,所以可以把最后处理的代码放置在destroyApp方法中。

下面接着来看一下另一组方法,来继续熟悉MIDlet类的使用:

1、 notifyPaused

使程序进入暂停状态

2、 notifyDestroyed

是程序进入到销毁状态。

以上两个方法和上面的三个方法不同,上面的三个方法是在状态切换过程中,会自动被系统调用。而这两个方法不会被系统自动调用,但是程序员在实际编程过程中可以手动调用这两个方法,使程序进入指定的状态。

比如如果想实现程序退出的功能,就只需要使MIDlet程序进入到销毁状态即可,也就是只需要手动调用notifyDestroyed方法即可。

上面是MIDlet类中最主要的两组方法,下面分MIDP1.0和MIDP2.0来分别介绍剩下的方法的作用。首先看一下MIDP1.0中的两个方法:

1、 getAppProperty

获得jad文件和manifest文件中属性的值,如果一个属性在以上两个文件中都包含,则以jad文件中的属性值为准。

2、 resumeRequest

系统通过调用该软件来判断是否需要使该MIDlet进入运行状态。如果需要进入运行状态,则系统会自动调用startApp方法。

在MIDP2.0中,MIDlet类中新增了两个方法,下面介绍一下这两个方法的作用,依次是:

1、 checkPermission

该方法是MIDP2.0的安全许可机制,在程序的实际使用过程中,可以通过该方法来检查MIDlet是否允许特定的操作,例如联网、发送短信息等等。

如果不允许该操作则返回0,允许返回1,未定义则返回-1。

2、 platformRequest

使用该方法可以访问某些系统功能,例如通用的功能主要有两种

使系统打开浏览器访问某个特定的网址:

platformRequest(“http://wap.sina.com.cn”);

这个功能可以实现用来实现提示用户下载新的程序版本等功能。

使手机拨打特定的电话号码:

paltformRequest(“tel:1860”);

则系统会自动利用手机来拨打1860。

分享到:
评论

相关推荐

    jbuilder2006中 运行 j2me (MIDlet).doc

    本文将详细介绍如何在JBuilder2006中配置和运行J2ME MIDlet项目,以解决启动后立即关闭的问题。 首先,确保已经安装了Sun Wireless Toolkit (WTK) 2.2。尽管JBuilder2006自带了WTK,但有时使用独立安装的WTK可能会...

    j2me_MIDlet_手机游戏入门开发_俄罗斯方块

    MIDlet是J2ME中的一个应用程序模型,专为小型设备设计,如手机。本教程将带你进入手机游戏开发的世界,通过开发经典游戏——俄罗斯方块,让你了解J2ME的基础知识。 首先,我们来看一下J2ME。J2ME是Java技术的一个...

    Midlet Signing

    本文将详细介绍Midlet程序签名的相关概念、原理以及在实际开发中的应用。 #### 二、Midlet程序签名概述 ##### 1. 信任域的概念 在Java ME平台中,信任域(Trust Domain)是指一组具有相同信任级别的应用程序集合。...

    j2me_MIDlet_手机游戏入门开发_扫雷_1

    我的Blog的文章源代码及工程 JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发 --扫雷(1)-不含线程 <br>可以参看这篇文章 http://blog.csdn.net/kome2000/archive/2007/10/09/1817034.aspx<br>

    tcp.rar_chat_j2me tcp_midlet tcp server

    标题中的"tcp.rar_chat_j2me tcp_midlet tcp_server"提到了几个关键概念:TCP、J2ME、Midlet和TCP服务器。这是一份关于Java Micro Edition (J2ME)平台下利用TCP协议进行网络通信的示例项目,具体是构建一个聊天应用...

    J2ME开发资料整理-在MIDlet中使用图标(附范例)

    **J2ME开发资料整理-在MIDlet中使用图标** 在Java 2 Micro Edition (J2ME)的开发环境中,MIDlet是用于移动设备和嵌入式系统的应用程序框架。MIDlet提供了丰富的功能,使得开发者能够创建交互式的、功能强大的移动...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_1_工程代码

    MIDlet是J2ME中的一个核心概念,它是一种轻量级的Java应用程序,专门设计用于移动电话和其他嵌入式设备。 首先,让我们了解MIDlet的基本架构。MIDlet通常由两个主要部分组成:MIDlet类和Displayable类。MIDlet类是...

    J2ME中文教程J2ME中文教程J2ME中文教程

    1. **MIDlet**:J2ME应用程序的基本单元,类似于Java应用程序中的主类。 2. **Displayable**:用户界面的基本元素,包括Screen和Form。 3. **User Interface**:J2ME使用轻量级的GUI组件,如TextBox、ChoiceGroup和...

    J2ME无线开发之MIDlet的部署及push自启动j2me程序

    ### J2ME无线开发之MIDlet的部署及Push自启动j2me程序 #### 一、MIDlet概述 MIDlet(Mobile Information Device Profile Applet)是Java 2 Micro Edition (J2ME) 平台上的一种轻量级应用程序。这类应用专为移动...

    J2ME Sprite精灵类人物移动

    Sprite是J2ME中用于表示动画或者可移动游戏对象的核心类,它可以从一个图像序列(如GIF或PNG格式的帧序列)中创建,也可以从单个图像中切割出来。Sprite具有位置、速度、方向等属性,可以通过编程控制其运动轨迹,...

    J2ME中文教程,J2ME手机程序开发

    本教程将深入讲解J2ME在手机程序开发中的应用,帮助开发者掌握这一核心技术。 ### J2ME技术概述 J2ME由两大部分构成:配置(Configurations)和框架(Profiles)。配置定义了运行时环境的基本特性,如内存大小和...

    J2ME 中文教程1.01

    5. **MIDlet**:J2ME中的应用程序单元,类似于Java SE中的JApplet。一个MIDlet由一个主类(实现了MIDlet接口)和可选的其他类组成。 6. **用户界面(UI)编程**:J2ME的UI通常基于 Lightweight User Interface ...

    j2me 实现拼图 一共三个类

    3. ** MIDlet 类**:这是J2ME应用程序的基本入口点,继承自 javax.microedition.midlet.MIDlet 类。在这个例子中,MIDlet类会创建并管理Puzzle和Tile对象,同时处理应用程序的生命周期,如启动、暂停和停止游戏。...

    J2ME MODS Midlet Obfuscated Delivery Sys-开源

    3. **JAD 属性管理:** 对于 JAD 文件中的属性,如 MIDlet-Version 或 MIDlet-Name,J2ME MODS 提供了灵活的管理方式,使得开发者能够根据需要动态调整这些属性,以适应不同环境或用户需求。 4. **MIDLet 交付确认...

    J2ME 游戏开发类

    标题“J2ME 游戏开发类”指的是基于Java 2 Micro Edition (J2ME) 平台的游戏编程领域。J2ME是一种Java技术,主要用于开发在小型设备上运行的应用程序,如手机、PDA和智能电视等。在移动设备尚未普及智能手机的年代,...

    j2me中文教程

    - MIDlet:运行在J2ME设备上的主应用程序类。 - Display:负责显示用户界面的类。 - Form:用于创建表单的组件。 - Item:构成表单的基本元素,如Label、EditField等。 4. CLDC(Connected Limited Device ...

    j2me 中文教程 开发环境 J2ME语言

    线设备的游戏开发类。你可以开发你的游戏了。COOL! 第七章“开发无线网络应用程序” 让我们学习如何开发令人激动的联网应用。无线网络在 当今的技术下与有线网络相比它的带宽更小、延迟更大、连接的稳定性更差。这...

    J2ME中文教程,适合初学者学习的资料

    1. MIDlet:J2ME应用程序的基本单元,类似于Java SE中的JAR文件。 2. JAD文件:描述MIDlet的元数据,包括版本、大小、所需的配置等信息。 3. RMS(Record Management System):J2ME中的数据存储系统,用于在设备上...

    J2ME中文开发教程(附带Myeclipse用J2ME插件)

    3. **MIDP API**:讲解如何使用MIDP API中的Canvas、Form、Item等组件创建用户界面,以及如何使用Midlet类作为应用程序的入口点。 4. **网络编程**:利用J2ME的Connection API进行HTTP请求,实现数据的下载和上传。 ...

    J2ME中文学习课件

    在J2ME中,你需要学习如何使用MIDlet套件管理器来控制MIDlet的生命周期,包括startApp()、pauseApp()、resumeApp()和destroyApp()方法。同时,掌握基本的UI组件如ChoiceGroup、TextBox和Form的使用也至关重要。此外...

Global site tag (gtag.js) - Google Analytics