<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 移動裝置最優化 直逼網絡j2me的應用性能和開發時間 ************************************ 如果你需要提高你的移動裝置的性能,這不僅隻是學習如何去寫一個j2me的應用然後讓他和資料庫 或者其他什麼系統進行通訊,但是如何去讓你的開發達到最優化,你一定會說我可以使用上層設計模式 他将會使我的移動裝置達到最優化,另外,我們将會向你介紹midp2.0的一項新技術:特定的sms消息 和他和未來的移動裝置之間的關系。 蜂窩電話商業領域正處在一個非常危險的時期,如果繼續隻使用最後的技術,而不去發展新的技術的話。 在本文中,我将更新移動裝置開發人員的思想,告訴你們,什麼是普遍的可用的技術。當然,這也包含了 一些在比賽中被發現的新技術以及如何将他們整合到移動應用中的一些綱要。 在我們進入例程BagTracMobile之前,這是一個重要的簡單的基本配置對于j2me的架構和j2me的開發工具包 以及可以應用到目前市場上的移動裝置之上,在本文的結束資源部分,你可以找到一些站點連結,以便你 學習和掌握j2me,本文的讀者範圍是具有具有中等j2me知識,并且熟悉midlets,具有*.jad檔案的開發經驗 ,知道怎麼使用j2me開發工具包去測試或者調試應用開發。(如果對以上所說,你沒有一點了解和概念,那麼 你最好先去看其他文章,使你對一些背景知識有所了解之後再來閱讀本文!)文末的資源清單對于初學者來說 将會是很完美的,可以使你學會如何開發midlets和一些基本j2me應用開發的概念,不管怎麼說,我們将開始深入 到j2me和唯一被發行的針對與移動裝置的設計模式了,呵呵! 開始: 大部分的j2me應用都會繼承javax.microedition,midlet.MIDlet類,并且擁有三個絕對方法:destroApp(),pauseApp(),和 startApp(),如果這看起來很熟悉,也許是吧,這些設定和applet很相似,知識方法名不一樣而已,把MIDlets當作運作在 移動裝置上的applet,這将是我們學習的一條捷徑。 不管怎麼說,在startApp()方法被調用之前,還有一些重要的事情要做,首先得構造MIDlet,獲得顯示對象的執行個體化, 然後你可以使用任何你将要使用的指令對象,然後為你應用加載所需要的圖檔,代碼如下所示: public BagTracMobile() { display = Display.getDisplay(this); exit = new Command("Exit", Command.EXIT, 1); query = new Command("Trac", Command.SCREEN, 1); back = new Command("Back", Command.BACK, 1); enter = new Command("Enter", Command.SCREEN, 1); try { saveImage = Image.createImage("/icon.png"); } catch (IOException e) { e.printStackTrace(); } } 現在我們可以有一個顯示對象的執行個體可以應用在我們的MIDlet中了,我們将使用各種指令去調用他,我們可以開發我們将要 在應用中使用的顯示部分了。 螢幕部分的開發: 螢幕流模型 在我們應用中所有的螢幕都将依據這個螢幕流模型,這個模型的基本前提是所有的界面知道如何去操作自身,怎樣顯示自身的資料,然後 怎樣去完成自身的功能,他要能根據不同的需求建立不同的界面,如果在在中型工作站上運作的中級應用,我想可以不這樣去做,但是現在。 我很明确的告訴你,不管怎樣也要這麼做,因為我們的行動電話隻擁有有限的資源,有兩點我們必須注意: 一、每一個類應用時産生最大值,你的每一個類都在建立構造方法,變量,方法。 二、每一個類使用的時候都是從記憶體中讀取的。 這應當成為我們設計移動裝置應用時引起重視的兩點,空間和記憶體是移動裝置世界最重要的,就像奶酪和冰淇淋一樣,屬于易耗品。你必須珍惜 你的程式的每一個位元組,并且保證他們盡可能的快速響應,是以,這對于界面來說,意味着什麼呢?,在一個其他應用中,用自己的方法建構自己的 界面,這是令人快樂的,在中型應用中用各自的類建構各自的螢幕,或者用大量的代碼去建構所有的螢幕,另外,這個模型認為,這些移動裝置上的 顯示螢幕都很簡捷,他們之間怎麼去完成,由自身去做會更好一點,每一個螢幕都将變得很簡潔,這将使螢幕代碼編寫的可控性增強。按照這樣的思路, 我們另外還有一個技巧:當你使用do時,不要采用任何的get/set方法,隻需要将每一個變量定義成public,這樣你可以節省下大量的空間。 讓我們看例子的開始螢幕: 就像我們見到的行動電話螢幕一樣,他包含了很少的部分,而且更加已于編碼。 // 建立一個form--這是你的基礎,當你添加元件時 formStart = new Form("BagTrac"); // 在form上建立一個我們需要使用的虛拟元件 choiceGroup = new ChoiceGroup("Search Type", List.EXCLUSIVE); choiceGroup.append("New", null); choiceGroup.append("Saved", null); formStart.append(choiceGroup); // 現在我們為螢幕的動作添加按鈕 // they're not really buttons but rather choices presented to the // user on the phone display. // These commands have been statically initialized in the constructor for // faster execution and reuse formStart.addCommand(command_exit); formStart.addCommand(command_enter); formStart.setCommandListener(this); // finally, display the screen display.setCurrent(formStart); 事件處理 繼續螢幕流模型 在一個MIDLet開發中,所有的按鈕事件都是通過public void commandAction()方法定義的,他必須擁有兩個參數,指令對象,然後抛出這個 動作,然後顯示對象從指令随想獲得抛出的值,并且把它顯示在螢幕上,通過這兩點,我們可以處理幾乎所有應用中的事件,我們熟悉螢幕, 而且我們知道按鈕被按下去了,然後就立刻關聯到相應的一系列的語句中去處理動作,這種處理使我們感到很熟悉,再說,他大概将要,就像我們 共享了java語言的事件模型一樣,你記得住那些擁有很多 if/else 關系的 public boolean action()和public boolean handleEvent()方法嗎? 不要擔心,在這些應用中,開發會變得很醜陋,這裡沒有足夠的螢幕和按鈕去讓你實作他。 螢幕模型允許我們去優化我們的事件處理,我們能使用知識然後和所有的移動裝置應用将會用一個模型樹去省下大量的編碼。 測試這個樹你将看到那種不管什麼時候,當你按下“後退“按鈕時,我們回到我們剛剛所在的那一螢幕,這隻需要簡單的保持我們剛才經過的那一螢幕 就可以了,這樣我們至少可以排除掉一半以上的鑒定,最後,我們可以使用java.util.Stack然後簡單的push()出螢幕就可以了,當我們向前的時候, 然後pop()螢幕當我們需要向後的時候,現在,隻要“後退”按鈕被按下,替換鑒定我們在哪一個螢幕,然後我們需要傳回這樣的一個過程,我們可以簡單 的調用一些方法,就像你看到的一樣: if (command == command_back) { displayable = null; display.setCurrent((Form)screenStack.pop()); } 當你重複這些操作的時候需要注意,因為我們知道每一個我們目前所在的螢幕,知道哪一個按鈕被按下了,這些還隻是關系到如何書寫 if/else 這些關系。 要用心注意這些當你向前移動一個螢幕時,你需要向棧中添加一個目前螢幕。 else if (command == command_enter) { screenStack.push(displayable); if (choiceGroup.getString (choiceGroup.getSelectedIndex()).equals("New")) screenNew(); else if (choiceGroup.getString (choiceGroup.getSelectedIndex()).equals("Saved")) screenSaved(); } 要完成更多更加複雜的螢幕流,也許最佳優化你的資料樹結構,每一個螢幕相當于一個節點,每一個按鈕都将引導到下個節點,使用最少的資源去保證這些 過程中的邏輯關系,在保證代碼的可維護性的同時還需要保證代碼的大小,雖然這個應用隻有四個螢幕顯示,但是一個大的應用也會有過長的代碼,是以不要因為 應用小而否認這一點,一定要注意。 (未完待續)