J2ME程序都是从MIDlet类开始执行,系统规定了MIDlet的生命周期。规定MIDlet程序有三种状态:
·暂停状态
·运行状态
·销毁状态
系统在执行MIDlet程序时,首先构造一个MIDlet类型的对象,然后使程序进入到暂停状态,按照生命周期的规定,系统会自动调用MIDlet对象的startApp方法使程序进入到运行状态,开始程序的执行。如果在创建MIDlet对象的过程中,或者是调用startApp的方法中发生了异常,则系统会自动调用MIDlet对象的destroyApp方法进行到销毁状态,也就是使程序退出。
所以生命周期中的第一个需要注意的地方就是熟悉在以上状态转换过程中,系统会自动调用的方法,然后在实际编写MIDlet类的时候,在这些方法中书写合适的代码,这样就可以在系统规定的状态转换时,自动调用这些方法。
另外一个需要说明的状态是暂停状态,系统在程序运行过程中,如果手机有来电,则系统会自动的使MIDlet程序进行到暂停状态,在进入到暂停状态以前,系统会自动调用MIDlet对象的pauseApp方法。当电话接听完毕以后,系统会自动使MIDlet程序进行到运行状态,在进入到运行状态以前,系统还会自动调用startApp方法使系统进入到运行状态。
对于上面的内容做一个简单的总结:
1、 startApp方法
在系统第一次运行的时候,系统会自动调用该方法使系统进入到运行状态。
当系统从暂停状态切换到运行状态以前,系统也会自动调用该方法。
2、 pauseApp方法
当系统从运行状态切换到暂停状态以前,会自动调用该方法。
3、 destroyApp方法
当系统发生异常退出程序以前,会自动调用该方法。该方法有一个boolean类型的参数,如果该参数为true则代表该方法必须清理和释放资源,如果为false可以抛出一个MIDletStateChangeException异常来表明它不想立即退出。
熟悉了这几个方法的使用以后,可以实现很多实用的功能,下面介绍两个实际功能的实现:
A、实现来电话时暂停的功能
在实际的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){
//停止线程
}
}
B、实现按挂机时清理的功能
熟悉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://www.j2medev.cn”);
这个功能可以实现用来实现提示用户下载新的程序版本等功能。
使手机拨打特定的电话号码:
paltformRequest(“tel:1860”);
则系统会自动利用手机来拨打1860。
分享到:
相关推荐
### Midlet程序签名机制详解 #### 一、引言 Midlet(Mobile Information Device Profile Application)是基于Java ME平台的应用程序。为了确保Midlet的安全性和可靠性,Java ME平台引入了程序签名机制。本文将详细...
### MIDlet程序自签名方法详解 #### 一、适用情况 在使用Java 2 Micro Edition (J2ME) 开发MIDlet应用时,经常会出现一个弹窗提示用户授权的情况。这种现象通常发生在非受信MIDlet(Untrusted MIDlet)上。当这类...
MIDlet根据其运行环境和功能需求可分为两大类: 1. **本地MIDlet**: - **定义**:本地MIDlet,又称为独立MIDlet,主要在移动设备上执行全部操作,无需访问外部网络资源。 - **示例**:计算器和简单的日程安排...
#### MIDlet生命周期详解 1. **初始化**:当JAM加载MIDlet时,首先调用其无参构造函数进行初始化。 2. **启动**:初始化后,`startApp()`被调用来启动MIDlet。 3. **暂停**:当MIDlet进入后台或设备进入低功耗模式...
MIDlet类继承自MIDlet,包含三个必须实现的生命周期方法:startApp(), pauseApp(), destroyApp()。 5. 使用MIDP 2.0的UI组件: J2ME使用MIDP 2.0的LCD UI(用户界面)类库来创建图形用户界面。包括LCDUI类库中的...
### J2ME手机游戏开发技术详解 #### 第一篇 起步篇 ##### 第一章 J2ME概述 - **1.1 J2ME体系结构** - **1.1.1 JAVA技术的版本**:Java技术根据目标硬件平台的不同分为三个主要版本:Java SE(标准版)、Java EE...
### 详解 MANIFEST.MF 文件 #### 概述 在Java开发中,MANIFEST.MF文件扮演着极其重要的角色,特别是在构建JAR文件时。它不仅记录了JAR包的基本元数据,还提供了运行时所需的配置信息。本文将详细介绍MANIFEST.MF...
- **详解**:MIDlet类中有三个关键的方法需要被复写: - `startApp()`:启动应用时调用。 - `pausedApp()`:当应用进入暂停状态时调用。 - `destroyApp(boolean unconditional)`:当应用被销毁时调用。参数`...
开发者需要掌握MIDlet,这是J2ME应用程序的主要组件,以及如何管理生命周期方法,如startApp、pauseApp和destroyApp。 在图形和用户界面方面,书中的章节会涵盖基本的2D图形绘制,包括使用Graphics类进行画线、填充...
### j2me手机游戏开发技术详解 #### J2ME概述 **1.1 J2ME体系结构** **1.1.1 JAVA技术的版本** Java技术根据不同的应用场景分为三个主要版本: - **J2SE(Java 2 Platform, Standard Edition)**:标准版,面向...
MIDlet由一个或多个类组成,其中最重要的两个是主类(通常继承自J2ME的MIDlet类)和显示类(通常继承自Displayable,如Canvas或Form)。 **四、图形与动画** 在J2ME中,游戏通常基于Canvas进行开发,因为Canvas...
编写MIDlet时,需要继承MIDlet类,并实现startApp、pauseApp和destroyApp这三个关键方法。 6. **用户界面设计** Java ME的用户界面通常使用Canvas或者Form组件来构建。Canvas允许自定义绘图,而Form则可以添加文本...
### J2ME开发详解——工具篇 #### 一、引言 J2ME(Java 2 Platform, Micro Edition)是Sun Microsystems(现已被Oracle收购)为嵌入式和移动设备设计的一个版本,它包含了Java的核心类库以及针对移动设备的一些扩展...
1. **用户界面**:JavaME使用WTK(Wireless Toolkit)提供的Midlet类来构建用户界面。源码中可能会展示如何使用LWUIT(Lightweight User Interface Toolkit)或者MIDP API创建图形界面元素,如按钮、文本框等。 2. ...
1. **编写源程序**:开发者使用Java语言编写MIDlet(J2ME应用程序)的源代码,这些代码通常继承自`javax.microedition.midlet.MIDlet`类。 2. **编译为class文件**:源代码经过Java编译器编译成字节码(.class文件)...
在开始编写游戏代码时,通常需要继承`MIDlet`类作为应用程序的基础,并使用`Displayable`接口来创建用户界面。例如,以下代码展示了简单的"Hello World"示例: ```java import javax.microedition.midlet.*; import...
### J2ME手机游戏开发详解知识点 #### 一、J2ME概述与体系结构 - **J2ME体系结构**:Java技术分为J2SE、J2EE和J2ME三个版本,其中J2ME(Java 2 Micro Edition)专为资源受限的设备设计,如手机、PDA等。它采用三层...