一、 程式入口J2me程式入口類為 MIDlet,所有的 j2me程式都要繼承該類來初始化 j2me程式。 Android程式入口是 Activity類。下面先看看她們的生命週期。J2me MIDlet 生命週期1 、 startApp (活動狀態)程式啟動的時候會調用該方法來初始化使用者需要的資源。2 、 PauseApp (暫停狀態)當手機來電接電話的時候,會調用該介面。使用者可以調用該介面停止也寫線程的操作。3 、 destroyApp (銷毀狀態)程式退出的時候調用。使用者可以調用該介面處理處於活動狀態的線程。該幾個周期狀態有 AMS 調用轉換,也可以程式碼調用轉換。 resumeRequest 調用會的結果是 AMS 會調用startApp 方法, notifyPaused 調用的結果是可能 AMS 調用 PsuseApp , notifyDestroyed 調用會使 AMS 銷毀該midlet 。Android Activity 生命週期1 、 onCreate 程式開始初始化的時候調用該介面,使用者導航返回到 Activity 的時候也會調用該介面。類似於J2me 裡面多個 Canvase(Displayable) 切換。所以 Activity 也類似於 Displayable 。2 、 onStart onCreate 調用完後,程式調用該介面。3 、 onResume onStart 調用後調用該介面。此時 Activity 進入運行狀態。4 、 onPause 新的 Activity 啟動的時候調用該介面。5 、 onStop 該 Activity 不可見的時候調用。6 、 onDestroy 程式銷毀的時候調用。二、 顯示組件J2me 中所有可顯示的組件都是直接或間接的繼承了 Displayable ,直接的是 Canvas 和 Screen 。不同的繼承導致了低級 UI 和進階 UI 的區別。 J2me 中現成的 UI 組件都是直接或者間接繼承了 Screen 。只要調用Display.getDisplay(MIDLet
instan).setCurrrent(Displayable disp) ,就可以把組件顯示到手機介面上。切換介面的時候也可以使用該介面。Android 可見的組件直接或者間接繼承了 android.view.View 。通過 Activity.setContentView(View view) 就可以顯示在 android 手機介面上,切換介面的時候也可以使用該介面。如果是直接繼承了 View 而不是 Android 內建的UI 組件,那麼還要自己去實現它的重新整理,類似 J2me 的低級 UI 組件。三、 重新整理處理J2me 重新整理:J2me 進階 UI 組件由組件內部重新整理實現,低級 UI 可以通過 Canvas 的 repain() 來重新整理。低級 UI 架構可以用 MVC方式來實現,建議使用二級緩衝。Android 重新整理:Android 提供介面 onLayout 來提供該 View 調整其裡面組件元素的位置布局,使用者只需要重寫該介面就 ok 。重新整理介面 onDraw ,該介面用來重新整理介面裡面的繪製元素。該介面類似 j2me
Canvas 的 paint 介面。不過兩個平台傳得參數有些意思。 J2me 傳的時 Graphics ,而 android 傳得是 Canvas 。 Android 繪製的時候會傳入一個參數 Paint 。該對象表示繪製的風格,比如顏色,字型大小,字型格式等。如果是移植的話,建議 android 也使用二級緩衝,這樣也容易管理。四、 使用者事件處理J2me 的鍵盤、觸筆事件都是通過 Canvas 定義介面分發。使用者只需要從寫這些介面就 ok 。它們分別是。鍵盤介面為: keyPressed(),keyRepeated(),keyReleased() 。觸筆介面為:pointerPressed(),pointerReleased(),pointerDragged() 。Android 的鍵盤,觸筆通過 View 中定義,只要 override 其介面就 ok 了。觸筆處理介面 onTouchEvent 。軟鍵盤onKeyDown() 、 onKeyUp() 、 onTracKballEvent() 。