MIDP开发全解析:从部署到用户界面
立即解锁
发布时间: 2025-08-18 02:20:31 阅读量: 2 订阅数: 5 

### MIDP 开发全解析:从部署到用户界面
#### 1. MIDP 应用部署
MIDP 模拟器支持多种运行 MIDlet 的方式,下面将详细介绍从 Web 服务器运行 MIDlet 套件以及本地安装 MIDlet 套件的方法。
##### 1.1 从 Web 服务器运行 MIDlet 套件
要通过 Web 服务器访问 MIDlet,需要一个 MIDP 模拟器可以访问的 Web 服务器,这里以 Apache 为例:
1. **安装 Web 服务器**:从 [http://httpd.apache.org](http://httpd.apache.org) 下载并安装 Apache 服务器。
2. **修改 MIME 类型配置**:为了让 Web 服务器处理 `.jad` 扩展名,需要在 `mime.types` 文件中添加以下行:
```plaintext
text/vnd.sun.j2me.app-descriptor jad
```
3. **部署 MIDlet 套件**:将 `JAR` 和 `JAD` 文件放在 Web 服务器可见的区域,对于 Apache 来说是 `htdocs` 目录。例如,将 `hi.jar` 和 `HiMIDletSuite.jad` 复制到该目录。
4. **启动 Web 服务器**:确保服务器无错误启动。
5. **运行 MIDlet**:使用 `–transient` 选项调用 `midp.exe`:
```plaintext
>%MIDP%\bin\midp -transient http://localhost/HiMIDletSuite.jad
```
##### 1.2 本地安装 MIDlet 套件
MIDP 模拟器支持从文件或 URL 模拟安装 MIDlet 套件,以便在“设备”上本地运行:
1. **模拟安装**:假设 Web 服务器已启动且应用已部署到可见区域,使用以下命令模拟本地安装:
```plaintext
>%MIDP%\bin\midp -install http://localhost/HiMIDletSuite.jad
```
2. **检查安装情况**:使用 `–list` 选项查看已安装的套件:
```plaintext
>%MIDP%\bin\midp –list
```
输出示例如下:
```plaintext
E:\_book\work\HiWorld>\_book\midp-fcs\bin\midp -list
JamMode = LIST
SmallWorldSuite
Hello1
Hello2
```
3. **运行已安装的套件**:使用 `–run` 选项运行,注意这里需要 JAD 文件中指定的套件名称:
```plaintext
>%MIDP%\bin\midp -run SmallWorldSuite
```
4. **移除已安装的套件**:使用 `–remove` 选项移除指定套件:
```plaintext
>%MIDP%\bin\midp -remove SmallWorldSuite
```
5. **获取套件信息**:使用 `–version` 选项获取已安装套件的配置信息:
```plaintext
>%MIDP%\bin\midp -version SmallWorldSuite
```
下面是 MIDlet 部署和运行的流程图:
```mermaid
graph TD;
A[安装 Web 服务器] --> B[修改 MIME 类型配置];
B --> C[部署 MIDlet 套件];
C --> D[启动 Web 服务器];
D --> E[从 Web 服务器运行 MIDlet];
F[模拟本地安装 MIDlet 套件] --> G[检查安装情况];
G --> H[运行已安装套件];
H --> I[移除已安装套件];
H --> J[获取套件信息];
```
#### 2. MIDP 应用控制
在深入了解 MIDP 用户界面 API 之前,需要先了解 MIDP 应用的控制和状态管理。
##### 2.1 MIDlet 状态
MIDlet 有三种状态:活动(Active)、暂停(Paused)和销毁(Destroyed)。MIDlet 必须实现三个抽象的受保护方法:`destroyApp(boolean unconditional)`、`startApp()` 和 `pauseApp()`,这些方法用于在状态转换时执行相应操作。
- **活动状态**:调用 `startApp()` 时,MIDlet 进入活动状态,此时可以使用所有可用资源。
- **暂停状态**:调用 `pauseApp()` 时,MIDlet 进入暂停状态,必须释放所有资源并变为非活动状态。MIDlet 可以在活动和暂停状态之间切换。
- **销毁状态**:调用 `destroyApp(boolean unconditional)` 时,MIDlet 进入销毁状态,一旦进入该状态,无法返回活动或暂停状态,必须释放所有资源并保存持久数据。如果 `unconditional` 标志设置为 `false`,进入销毁状态失败会抛出 `MIDletStateChangeException`;如果为 `true`,无论返回什么都会进入销毁状态。
状态转换图如下:
```mermaid
graph LR;
A[活动状态] --> B[暂停状态];
B --> A;
A --> C[销毁状态];
B --> C;
```
##### 2.2 投资报价应用控制
在 MIDP 中实现投资报价应用时,创建了两个应用控制类:`ObtainQuoteMIDlet` 和 `RetrieveQuoteMIDlet`。
`ObtainQuoteMIDlet` 的基本代码如下:
```java
import javax.microedition.midlet.*;
public class ObtainQuoteMIDlet extends MIDlet{
public ObtainQuoteMIDlet () {
}
protected void startApp() {
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
}
```
0
0
复制全文