日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

转 深入理解Midlet类

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转 深入理解Midlet类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在J2ME編程過程中,MIDlet是最核心的類之一,熟悉該類的使用是J2ME學習過程中必須首先掌握的類,下面就結合實際介紹一下該類的實際使用。

???????眾所周知,J2ME程序都是從MIDlet類開始執行,系統規定了MIDlet的生命周期。規定MIDlet程序有三種狀態:

1、??暫停狀態

2、??運行狀態

3、??銷毀狀態

系統在執行MIDlet程序時,首先構造一個MIDlet類型的對象,然后使程序進入到暫停狀態,按照生命周期的規定,系統會自動調用MIDlet對象的startApp方法使程序進入到運行狀態,開始程序的執行。如果在創建MIDlet對象的過程中,或者是調用startApp的方法中發生了異常,則系統會自動調用MIDlet對象的destroyApp方法進行到銷毀狀態,也就是使程序退出。

所以生命周期中的第一個需要注意的地方就是熟悉在以上狀態轉換過程中,系統會自動調用的方法,然后在實際編寫MIDlet類的時候,在這些方法中書寫合適的代碼,這樣就可以在系統規定的狀態轉換時,自動調用這些方法。

另外一個需要說明的狀態是暫停狀態,系統在程序運行過程中,如果手機有來電,則系統會自動的使MIDlet程序進行到暫停狀態,在進入到暫停狀態以前,系統會自動調用MIDlet對象的pauseApp方法。當電話接聽完畢以后,系統會自動使MIDlet程序進行到運行狀態,在進入到運行狀態以前,系統還會自動調用startApp方法使系統進入到運行狀態。

對于上面的內容做一個簡單的總結:

1、??startApp方法

在系統第一次運行的時候,系統會自動調用該方法使系統進入到運行狀態。

當系統從暫停狀態切換到運行狀態以前,系統也會自動調用該方法。

?

2、??pauseApp方法

當系統從運行狀態切換到暫停狀態以前,會自動調用該方法。

3、??destroyApp方法

當系統發生異常退出程序以前,會自動調用該方法。該方法有一個boolean類型的參數,如果該參數為true則代表該方法必須清理和釋放資源,如果為false可以拋出一個MIDletStateChangeException異常來表明它不想立即退出。

???????熟悉了這幾個方法的使用以后,可以實現很多實用的功能,下面介紹兩個實際功能的實現:

1、??實現來電話時暫停的功能

在實際的MIDlet編程中,必須實現手機來電時暫停程序的功能,如果有線程時,還需要把線程停止掉,然后當電話結束以后,重新顯示界面,并重新啟動線程。

startApp方法的具體的實現代碼框架如下:

public void startApp(){

????????//獲得當前顯示的界面

????????Displayable curr = display.getCurrent();

????????//判斷是否是第一次運行

????????if(curr == null){

???????????????//顯示第一個界面,例如logo界面

?

????????}else{

???????????????//顯示來電以前的界面

???????????????display.setCurrent(curr);

???????????????//如果需要,還可以啟動線程

????????}

}

如果游戲界面中有線程,則需要在來電時暫停線程,而pauseApp在暫停以前會被系統調用,所以可以在pauseApp方法中實現該功能。pauseApp方法的實現代碼框架如下:

????????public void pauseApp(){

???????????????//獲得當前顯示的界面

??????????????????????Displayable curr = display.getCurrent();

??????????????????????//判斷是否是游戲界面

??????????????????????if(curr instanceof GameCanvas){

?????????????????????????????//停止線程

??????????????????????}

????????}

2、??實現按掛機時清理的功能

熟悉MIDlet編程的人都知道,在程序運行過程中按掛機鍵,可以使MIDlet程序退出,在低級用戶界面編程中,可以在keyPressed方法中捕獲該事件,但是卻無法處理,因為捕獲以后,程序就直接退出了。

如果游戲中有背景音樂等,則當按掛機鍵直接退出的時候,音樂還會存在,這樣就會造成很多的問題。但是按掛機鍵以后,在程序退出以前,系統會自動調用destroyApp方法,所以可以把最后處理的代碼放置在destroyApp方法中。

??????

???????下面接著來看一下另一組方法,來繼續熟悉MIDlet類的使用:

1、??notifyPaused

使程序進入暫停狀態

2、??notifyDestroyed

是程序進入到銷毀狀態。

???????以上兩個方法和上面的三個方法不同,上面的三個方法是在狀態切換過程中,會自動被系統調用。而這兩個方法不會被系統自動調用,但是程序員在實際編程過程中可以手動調用這兩個方法,使程序進入指定的狀態。

???????比如如果想實現程序退出的功能,就只需要使MIDlet程序進入到銷毀狀態即可,也就是只需要手動調用notifyDestroyed方法即可。

???????上面是MIDlet類中最主要的兩組方法,下面分MIDP1.0和MIDP2.0來分別介紹剩下的方法的作用。首先看一下MIDP1.0中的兩個方法:

1、??getAppProperty

獲得jad文件和manifest文件中屬性的值,如果一個屬性在以上兩個文件中都包含,則以jad文件中的屬性值為準。

2、??resumeRequest

系統通過調用該軟件來判斷是否需要使該MIDlet進入運行狀態。如果需要進入運行狀態,則系統會自動調用startApp方法。

???????在MIDP2.0中,MIDlet類中新增了兩個方法,下面介紹一下這兩個方法的作用,依次是:

1、??checkPermission

該方法是MIDP2.0的安全許可機制,在程序的實際使用過程中,可以通過該方法來檢查MIDlet是否允許特定的操作,例如聯網、發送短信息等等。

如果不允許該操作則返回0,允許返回1,未定義則返回-1。

?

2、??platformRequest

使用該方法可以訪問某些系統功能,例如通用的功能主要有兩種

使系統打開瀏覽器訪問某個特定的網址:

????????platformRequest(“http://wap.sina.com.cn”);

這個功能可以實現用來實現提示用戶下載新的程序版本等功能。

使手機撥打特定的電話號碼:

????????paltformRequest(“tel:1860”);

????????則系統會自動利用手機來撥打1860。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/sergeycao/archive/2009/01/17/3811473.aspx

轉載于:https://www.cnblogs.com/fyq6891/archive/2011/06/09/2075975.html

總結

以上是生活随笔為你收集整理的转 深入理解Midlet类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。