溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

第九章:MIDP API (轉)

發(fā)布時間:2020-08-13 22:41:59 來源:ITPUB博客 閱讀:196 作者:rainytag 欄目:編程語言
  • 介紹

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

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

 



  • UI 設計注意事項

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

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

    讓我們在后面的章節(jié)里更進一步了解 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 -- 用于為后臺線程中將來要執(zhí)行的任務確定時間。



    ? java.util.TimerTask -- 被 java.util.Timer 類使用,用來為后臺線程中稍后的執(zhí)行定義任務。



    ? javax.microedition.io.HttpConnection -- 一個接口,為 HTTP 連接定義必要的方法和常量。



    ? java.lang.IllegalStateException -- 一個 RuntimeException, 指出在不合法或不合適的時間已經(jīng)調用的一個方法。

 



  • MIDlet 介紹

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

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

    MIDlet 在應用程序生命周期中有三種可能的存在狀態(tài) -- 運行狀態(tài)、暫停狀態(tài)、銷毀狀態(tài)。運行狀態(tài),正如其名稱所暗示的,意味著 MIDlet 正在運行中。這種狀態(tài)始于 startApp 方法被調用時。在暫停狀態(tài)中,MIDlet 持有的所有資源將被釋放,但是它準備著再次被運行。調用 notifyPaused 方法時,MIDlet 處于暫停狀態(tài)。在銷毀狀態(tài)中,MIDlet 已經(jīng)永久地將其自身關閉,釋放所有的資源,等待著廢物清理程序的處理。它是通過 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。它也實現(xiàn) CommandListener 接口來處理事件:



    public class HelloWorld extends MIDlet implements CommandListener

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



    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 的一次執(zhí)行中它可能會被調用多次。如果 MIDlet 暫停,pauseApp() 將會被調用。要重新啟動 MIDlet,需調用 startApp()。僅須執(zhí)行一次的主初始化代碼應該放置在構造程序中:



    public void startApp()

    {

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

    Display display = Display.getDisplay(this);

    display.setCurrent( form );

    }

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

    public void pauseApp() { }

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

    public void destroyApp(boolean unconditional)

    {

    form = null;

    }

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



    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 應用程序提供訪問關于其運行所在環(huán)境信息的權限。



    javax.microedition.rms -- 定義一個類的集合,這些類為 MIDlet 提供了永久存儲并隨后重新得到數(shù)據(jù)的機制。
[@more@]
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI