亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您好,請問MIDlet是什么?求解釋!

您好,請問MIDlet是什么?求解釋!

守候你守候我 2021-12-31 11:07:26
J2ME的教程中經常提到一個MIDlet,請問哪位高手解答一下我的問題我比較想關心是什么叫MIDlet,MIDlet究竟在j2Me中扮演著何等角色.希望高手解決我的問題?
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

在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。




查看完整回答
反對 回復 2022-01-04
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

MID的解釋是這樣的,相應的JAVA標準是MIDP,Mobile
Infomation
Device
Profile.
Java的各種功能包都叫Profile,體現一種功能能力!
關于這個****let的東西解釋為小巧的程序是不恰當的,這種程序和一般程序的最大區別在于運行的方式。其它程序都是自己運行的,而這些程序不能自己運行,需要有一個被稱為"容器"的東西來裝載和調度這種程序。關于這里用到的容器、裝載、調度都是我自己理解后的翻譯,多有不準確的地方。
舉個例子,我們經常在IE的頁面頂上會提示一個警告信息,說某個程序運行可能會損害你的機器什么的。就是說IE在瀏覽某個頁面的時候,這個頁面中有一個Applet類似的程序,IE已經把它裝載進來了,也識別出來了,但是問你要不要運行這個程序。



查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號