国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME入門-(9)MIDPAPI

2019-11-18 16:21:07
字體:
來源:轉載
供稿:網友

  第九章:MIDP API

介紹

移動信息設備簡表 (MIDP) 適合類似于蜂窩電話和尋呼機這樣的設備。MIDP,就象 Kjava 一樣,同樣也建立在 CLDC 之上。MID 簡表提供一種標準的運行時環境,允許在終端用戶設備上動態地配置新的應用程序和服務。

在本章中,我們將詳細地討論 MID 定義的七個軟件包。我們還將建立一個 MIDP 應用程序示例。

UI 設計注意事項

MIDP 包括一個低級的 UI API 和一個高級的 UI API。低級的 API 允許您完全訪問一個設備的顯示屏,也允許訪問原始鍵和指針事件。然而,使用低級 API 時, 沒有可用的用戶界面控件。應用程序必須精確地繪制出按鈕和其它所有的控件。

相反,高級 API 提供簡單的用戶界面控件但不能直接訪問原始的輸入事件或顯示屏。由于顯示屏的尺寸和 MIDP 設備輸入方法的差異,控件顯得很抽象。MIDP 的實現確定了繪制控件的方法,也確定了如何管理用戶輸入。

讓我們在后面的章節里更進一步了解 MIDP 的軟件包和類。

MIDP API

MIDP 包含四個核心 CLDC 軟件包 (java.lang、java.io、java.util 和 javax.microedition.io),另加下面的三個特定于 MIDP 的軟件包:

· javax.microedition.lcdui

· javax.microedition.midlet

· javax.microedition.rms

我們將在本章的后面部分詳細介紹特定于 MIDP 軟件包。除了上面新的軟件包之外,MIDP 還向核心 CLDC 軟件包添加了四個新類,如下所示。

· java.util.Timer -- 用于為后臺線程中將來要執行的任務確定時間。
· java.util.TimerTask -- 被 java.util.Timer 類使用,用來為后臺線程中稍后的執行定義任務。
· javax.microedition.io.HttpConnection -- 一個接口,為 HTTP 連接定義必要的方法和常量。
· java.lang.IllegalStateException -- 一個 RuntimeException, 指出在不合法或不合適的時間已經調用的一個方法。

MIDlet 介紹

MIDlet 是一個 Java 類,它擴展了 javax.microedition.midlet.MIDlet 抽象類。實現 startApp()、pauseApp()和 destroyApp()方法,這些方法類似于 J2SE 的 java.applet.Applet 類中的 start()、stop()和 destroy()方法。

除了擴充 javax.microedition.midlet.MIDlet 的主 MIDlet 類之外,一個 MIDP 應用程序通常還包括其它一些類,這些類能隨它們的資源一起被打包成為 jar 文件 -- 稱之為 MIDlet 套件。一個 MIDlet 套件中的不同 MIDlet 能共享 jar 文件的資源,盡管不同套件中的 MIDlets 不能直接相互作用。

MIDlet 在應用程序生命周期中有三種可能的存在狀態 -- 運行狀態、暫停狀態、銷毀狀態。運行狀態,正如其名稱所暗示的,意味著 MIDlet 正在運行中。這種狀態始于 startApp 方法被調用時。在暫停狀態中,MIDlet 持有的所有資源將被釋放,但是它準備著再次被運行。調用 notifyPaused 方法時,MIDlet 處于暫停狀態。在銷毀狀態中,MIDlet 已經永久地將其自身關閉,釋放所有的資源,等待著廢物清理程序的處理。它是通過 notifyDestroyed 方法來調用的。

在接下來的兩頁中,我們來看一個簡單的 HelloWorld MIDlet。

HelloWorld MIDlet

與使用 KJava HelloWorld 應用程序一樣,這個 MIDlet 也會在 MIDP 設備的顯示屏上顯示 "Hello World!" 和 Exit 按鈕,按下該按鈕會終止應用程序。

HelloWorld.java 文件以下面的代碼行開始,這些代碼行導入稍后會在 HelloWorld 類中使用的類:

import javax.microedition.midlet.MIDlet;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Form;

由于 HelloWorld 類是一個 MIDP 應用程序,它擴展了 MIDlet。它也實現 CommandListener 接口來處理事件:

public class HelloWorld extends MIDlet implements CommandListener

下面的方法是一個缺省構造程序,它創建一個新表單,在上面初始化控件,然后顯示出來:

PRivate Form form;

public HelloWorld()

{

// Create a new form on which to display our text

form = new Form("Test App");

// Add the text "Hello World!" to the form

form.append("Hello World!");

// Add a command button labeled "Exit"

form.addCommand( new Command( "Exit", Command.EXIT, 1 ) );

// Register this object as a commandListener

form.setCommandListener( this );

}

調用 startApp() 方法啟動應用程序與小應用程序的啟動方法很象。
在 MIDle 的一次執行中它可能會被調用多次。如果 MIDlet 暫停,pauseApp() 將會被調用。要重新啟動 MIDlet,需調用 startApp()。僅須執行一次的主初始化代碼應該放置在構造程序中:

public void startApp()

{

// Get a reference to the display, and show the form

Display display = Display.getDisplay(this);

display.setCurrent( form );

}

pauseApp() 被調用使得 MIDlet 處于暫停狀態。在此應用程序中,當進入暫停狀態時,我們沒執行任何操作;但是我們仍然需要在 MIDlet 中實現 pauseApp 方法,因為它是父 MIDlet 類中的抽象方法。

public void pauseApp() { }

destroyApp() 被調用,破壞了 MIDlet 并使其處于銷毀狀態。在此應用程序中,我們通過將引用設為 null,釋放了對表單的引用。

public void destroyApp(boolean unconditional)

{

form = null;

}

commandAction() 方法是事件處理程序,被請求實現 CommandListener 接口。目前,它破壞了應用程序并通知應用程序管理軟件 MIDlet 已經完成。

public void commandAction(Command c, Displayable d)

{

// Destroy this MIDlet

destroyApp(true);

// Notify the application management software that this MIDlet

// has entered the destroyed state

notifyDestroyed();

}

 

MIDP 軟件包

除標準 CLDC 軟件包之外,MIDP 還包含三個附加的軟件包:

· javax.microedition.lcdui -- 定義用來控制 UI 的類。這個軟件包既包含高級 UI 類(例如 Form、Command、DateField 和 TextField 等),又包含低級 UI 類(允許用低級方式控制 UI)。

· javax.microedition.midlet -- 包含 MIDP 主類中的一個,MIDlet 類,為 MIDP 應用程序提供訪問關于其運行所在環境信息的權限。

javax.microedition.rms -- 定義一個類的集合,這些類為 MIDlet 提供了永久存儲并隨后重新得到數據的機制。

出處 中文JAVA技術網

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柳林县| 遂宁市| 清远市| 赞皇县| 宕昌县| 腾冲县| 陈巴尔虎旗| 阿拉善左旗| 章丘市| 昂仁县| 万载县| 江门市| 太白县| 鹤庆县| 南木林县| 乌鲁木齐县| 镇雄县| 额济纳旗| 铁岭县| 丹凤县| 潍坊市| 泰兴市| 子长县| 周宁县| 蓬安县| 河北省| 金门县| 鱼台县| 疏勒县| 达尔| 陇南市| 正阳县| 河南省| 宜丰县| 寿宁县| 富民县| 通化县| 阿荣旗| 苏州市| 巴林右旗| 凤凰县|