深入理解MIDlet类
作者:陈跃峰
出自:http://blog.csdn.net/mailbomb
在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。
由于作者水平有限,不足之处请海涵和指正。
说明:未经允许,严禁转载!
分享到:
相关推荐
**MIDlet 控件实例项目 (mvc) 深度解析*...通过这个项目,学习者可以深入理解MIDlet的生命周期管理,控件的使用,以及如何在J2ME环境中实现MVC设计模式。这对于想要进入移动开发领域的开发者来说是一份宝贵的实践资料。
通过对Midlet程序签名机制的深入了解,我们可以更好地理解Java ME平台是如何保护应用程序安全性的。无论是开发者还是最终用户,都应该重视Midlet的签名过程,这不仅能够提高应用程序的安全性,还能增强用户的信任感...
首先,了解MIDlet中的图标主要分为两类:应用程序图标和警告图标。应用程序图标通常在手机的主屏幕上显示,代表MIDlet的视觉标识;而警告图标则用于显示在通知或警告消息中,帮助用户快速识别应用的状态。 要在...
1. Midlet类:这是整个应用程序的入口点,通常继承自 javax.microedition.midlet.Midlet 类。 2. RMS操作类:包含了与RMS交互的代码,如打开、创建RecordStore,以及读写记录。 3. 用户界面组件:可能包括命令按钮、...
在Java 2 Micro Edition ...这个案例的实现涉及到对J2ME蓝牙API的深入理解和实践,对于开发移动设备上的蓝牙应用具有重要的参考价值。通过这种方式,MIDlet可以与其他蓝牙设备(包括电脑)进行交互,实现更丰富的功能。
在移动设备上开发应用程序,尤其是早期的Java ME(Mobile Information Device Profile)平台,开发者常常使用MIDlet来创建可...不过,为了深入理解和利用这些资源,你需要具备一定的Java编程基础和对MIDI协议的理解。
MIDlet 深入理解涉及许多关键知识点,包括MIDP(Mobile Information Device Profile)规范、生命周期管理、用户界面、数据存储以及网络通信。下面将详细探讨这些方面。 1. **MIDP规范**:MIDP是J2ME的一部分,提供...
我们的项目名为"MyMidlet",因此主MIDlet类将是"MyMidlet",而Canvas类可以命名为"MyCanvas"。 1. **创建MyMidlet类** 这个类需要继承自MIDlet,并实现必要的方法:startApp()、pauseApp()和destroyApp()。...
总的来说,通过这个简单的J2ME俄罗斯方块项目,初学者可以深入理解移动游戏开发的核心概念,包括MIDlet的生命周期管理、图形编程、用户输入处理以及资源优化。同时,这也是一个很好的实践机会,帮助你从理论到实践,...
在深入探讨高效Midlet编程之前,我们首先需要理解Midlet(Midlet即Mobile Information Device Profile)是什么。Midlet是Java ME(Micro Edition)的一部分,专为移动设备设计,如手机和平板电脑,提供了一个小型的...
MIDlet的生命周期包括初始化、暂停、恢复和销毁等状态,开发者需要覆盖MIDlet类的相关方法来管理这些状态。 midlet包还包含了一个异常类——MIDletStateChangeException,用于监控MIDlet状态的变化。当MIDlet的状态...
Motorola A6288是一款支持J2ME的手机,通过它我们可以深入理解MIDlet的下载过程。有两种方式可以在手机上下载和安装MIDlet:一是通过数据线将MIDlet从PC或其他设备传输到手机;二是通过互联网进行OTA(Over-The-Air...
标题中的“j2ME电话簿案例源码”指的是一个基于Java 2 Micro Edition(j2ME...同时,解答了如何更改启动Midlet的问题,涉及JAD文件的修改和Midlet类的设计。对于想深入了解j2ME开发的初学者,这是一个很好的实践项目。
【标题】:“j2me休闲小游戏--飞机” ...同时,这也是一个了解Midlet结构和J2ME应用程序部署的好例子。通过研究和修改这个项目,学习者可以逐步提升自己的编程技能,并且对移动游戏开发有更深入的理解。
这个压缩包包含了一些关于J2ME的源代码,对于想要学习或者深入理解J2ME开发的程序员来说,是一个宝贵的资源。 J2ME的架构主要由两部分组成:KVM(K Virtual Machine)和配置及Profile。KVM是J2ME设备上的轻量级...
《KJava深入浅出——Java在PDA上的程序设计》一书主要涵盖了Java技术在掌上设备(PDA)上的应用开发,旨在帮助开发者理解和掌握KJava编程的基础知识和实战技巧。KJava是Java Micro Edition (Java ME)的一个分支,...
这些状态之间的转换由系统管理,开发者需要在MIDlet类中覆盖相应的方法来处理这些状态变化。 **5. 用户界面** MIDP2.0提供了Canvas和Form两种基本的UI组件。Canvas用于自定义绘制图形,而Form则包含文本和用户可选...
通过学习这些资源,开发者不仅可以掌握J2ME的基本界面设计,还能深入了解如何通过Command增强用户体验。在实际开发中,理解并熟练运用这些概念是创建功能丰富的移动应用的关键步骤。记得实践是检验理论的最好方式,...
MIDlet类包含三个关键方法:startApp()、pauseApp()和destroyApp(),分别用于应用程序的启动、暂停和销毁。 **四、用户界面** J2ME提供了几种UI组件,如Form、ChoiceGroup、TextBox等,用于构建简单用户界面。MIDP ...