精通J2ME中的Hello World(轉載)

          初學java的時候一般都寫過如下的HelloWorld程序,今天我準備詳細講述一下J2ME中的HelloWorld。無論你是J2ME開發高手還是新手都應該讀讀這篇文章,我想它會對你有所幫助!

          ????? 在javax.microedition.midlet包中定義了一個非常重要的類MIDlet,所有J2ME的應用程序都必須擴展這個類,只有這樣才可以使得應用管理軟件(Application Management Software)管理MIDlet,包括下載、安裝和刪除。在被AMS管理的同時,MIDlet可以和應用管理軟件通信通知應用管理軟件自己狀態的變化,通常是通過方法notifyDestroyed()和notifyPaused()實現的。最后MIDlet還可以通過getAppProperty(String name)讀取在jad文件中定義的屬性值。

          ????? MIDlet有三個狀態,分別是pause,active和destroyed。在啟動一個MIDlet的時候,應用管理軟件會首先創建一個MIDlet實例并使得他處于pause狀態,當startApp()方法被調用的時候MIDlet進入active狀態,也就是我們平時所說的運行狀態。在active狀態調用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet進入destroyed或者pause狀態。值得一提的是destroyApp(boolean unconditional)方法,很多開發者對unconditional參數不是很理解,事實上,當destroyApp()方法被調用的時候,AMS通知MIDlet進入destroyed狀態。在destroyed狀態的MIDlet必須釋放了所有的資源,并且保存了數據。如果unconditional為false的時候,MIDlet可以在接到通知后拋出MIDletStateChangeException而保持在當前狀態,如果設置為true的話,則必須立即進入destroyed狀態。

          ????? 下面是根據上述問題我編寫的一個J2ME中的HelloWorld程序,他比j2se中的helloworld要復雜一點。新手可以仔細看看。
          package com.j2medev.mingjava;

          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;
          import javax.microedition.lcdui.*;

          public class HelloWorld extends MIDlet implements CommandListener
          {
          ??? private Display display;
          ??? private Form mainForm;
          ??? private StringItem stringItem;
          ??? private Command exitCommand = new Command("Exit", Command.EXIT, 1);

          ??? public static final String WEB_SITE = "WEB_SITE";

          ??? protected void startApp() throws MIDletStateChangeException
          ??? {

          ??????? initMIDlet();
          ??????? display.setCurrent(mainForm);

          ??? }

          ??? private void initMIDlet()
          ??? {
          ??????? display = Display.getDisplay(this);
          ??????? mainForm = new Form("Hello World");
          ??????? stringItem = new StringItem(null, null);
          ??????? String text = getAppProperty(WEB_SITE);
          ??????? stringItem.setText(text);
          ??????? mainForm.append(stringItem);
          ??????? mainForm.addCommand(exitCommand);
          ??????? mainForm.setCommandListener(this);
          ??? }

          ??? protected void pauseApp()
          ??? {

          ??? }

          ??? protected void destroyApp(boolean arg0) throws MIDletStateChangeException
          ??? {
          ??????? System.out.println("exit the application");
          ??? }

          ??? public void commandAction(Command cmd, Displayable display)
          ??? {
          ??????? if (cmd == exitCommand)
          ??????? {
          ??????????? try
          ??????????? {
          ??????????????? destroyApp(false);
          ??????????????? notifyDestroyed();
          ??????????? } catch (MIDletStateChangeException e)
          ??????????? {
          ??????????????? e.printStackTrace();
          ??????????? }
          ??????? }
          ??? }

          }

          HelloWorldMIDlet.jad文件內容如下,如果你還不是很清楚jad文件請參考MIDP中的屬性問題。尤其是當你在安裝MIDlet到手機上的時候。

          MIDlet-Jar-Size: 2128
          MIDlet-1: HelloWorld,/icon.png,com.j2medev.mingjava.HelloWorld
          MIDlet-Jar-URL: HelloWorldMIDlet.jar
          MicroEdition-Configuration: CLDC-1.0
          MIDlet-Version: 1.0.0
          MIDlet-Name: HelloWorldMIDlet
          MIDlet-Vendor: www.j2medev.com
          MicroEdition-Profile: MIDP-1.0
          WEB_SITE: www.j2medev.com

          posted on 2006-12-20 16:22 leoli 閱讀(240) 評論(0)  編輯  收藏 所屬分類: java

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案(17)

          文章分類(86)

          收藏夾(3)

          flex blog

          good site

          java blog

          my friend

          tools

          抓蝦

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 衡阳县| 桂东县| 建德市| 五河县| 加查县| 屯昌县| 宁津县| 侯马市| 清镇市| 万山特区| 吐鲁番市| 崇阳县| 齐齐哈尔市| 赞皇县| 巢湖市| 凌海市| 辰溪县| 射洪县| 都兰县| 岗巴县| 团风县| 太仓市| 白沙| 都江堰市| 钟祥市| 黑河市| 宁晋县| 浪卡子县| 乌苏市| 泸州市| 穆棱市| 轮台县| 鄂托克前旗| 寻甸| 通榆县| 汶川县| 偏关县| 龙泉市| 高青县| 金川县| 双鸭山市|