`
hu1010
  • 浏览: 23463 次
  • 性别: 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

    在进行j2me项目开发,工具eclipse调试出现错误时不能定位到某行,用jbuilder2006能解决这个问题。现在对其配置进行详细说明。

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

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

    Midlet Signing

    详细介绍了midlet程序签名机制,包括三种信任域的不同、开发过程中使用的签名与产品签名的不同等内容。并基于MOTO手机开发平台给出示例。

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

    j2se编写的俄罗斯方块游戏,注释详尽,代码完全公开,本例只有500行代码,1个类,学习写游戏不要错过啊! 这个是的移植 j2me 版本,大家可以参看这两个版本的区别!

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

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

    读取MIDlet的系统属性

    J2ME读取MIDlet的系统属性,用于判断J2ME获取的各个属性

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

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

    J2ME MODS Midlet Obfuscated Delivery Sys-开源

    J2ME MODS,MIDLet模糊交付系统,是一组脚本,允许您交付JAD和JAR文件。 这消除了诸如JAR / JAD缓存之类的问题,允许进行JAD属性管理和MIDLet交付确认。

    J2ME 中文教程

    本章介绍了J2ME平台的体系结构和MIDlet生命周期的概念。为以后的内容打下良好的基础。 第二章“CLDC简介”介绍了MIDP的基础Java Community Process(JCP)公布的CLDC1.0规范(即JSR30)。有了这些知识你就可以...

    J2ME 中文版教程

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

    J2ME制作简单的界面

    //Create a J2ME MIDP Midlet Suite //Create a J2ME Midlet : Menu package Net.Snail.zm; import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; import javax.microedition....

    tcp.rar_chat_j2me tcp_midlet tcp server

    初学者使用。J2ME的TCP连接应用,由六个Client和六个Server对应,逐步建立连接。开启一个服务器,同时开启多个客户端,通过服务器,多个客户端之间可以实现聊天

    elechat: j2me midlet-开源

    j2me midlet midp2.0和随附的Java聊天服务器,用于在jabber聊天室中进行交互

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

    我在一个项目开发中整理的资料,不知道有没有人发过。

    基于java+J2ME的手机贪吃蛇游戏开发系统设计与实现毕业设计(项目报告+源代码)

    基于J2ME的手机游戏开发代码说明 随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据...

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

    与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动速度,...

    [计算机毕设]基于java+J2ME的手机贪吃蛇游戏开发系统设计与实现(项目报告+源代码).zip

    基于J2ME的手机游戏开发代码说明 随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_2

    与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_1

    贪吃蛇升级版本,与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是...

    JAVA基于J2ME的手机游戏开发(论文+源代码)

    随着通信技术的发展和手机的普及,手机游戏的开发技术...本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。 关键词:手机游戏; MIDP应用程序; 永久性数据

Global site tag (gtag.js) - Google Analytics