程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> J2ME系列學習(四)

J2ME系列學習(四)

編輯:J2ME

1 系統參數的提取

MIDlet在運作時,必須通過Java.lang.System.getProperty()函數在取得系統屬性。我們可以通過一些系統屬性了解MIDlet身處的環境相關信息,如下:

     microedition.profiles:取得系統支持的所有Profile信息。

     microedition.configuration:取得系統所支持的Configuration信息。

     microedition.locale:取得系統目前所使用的地區信息。

     microedition.platform:MIDlet所在平台(或機器)的名稱或型號。

     microedition.encoding:取得系統缺省使用的語言編碼信息。

2 字符串的轉換

通過上述方法所取得的清單文件或描述文件之中屬性的屬性值都視為字符串,如果我們要做運算則要轉換一下才行。

字符串轉換成數值:用Java.lang中的ByteShortIntegerLong四個類中的parseXXX()方法。

CLDC1.0不支持浮點數,CLDC1.1開始支持浮點數。

3 隨機數

Java.util包中有個Random類,負責用來產生隨機數(只能是int或long類型的隨機數)。可以使用Random rnd = new Random(seedvalue) 或者也可以用Random rdm = new Random() ;這個構造函數會在內部調用this(System.currentTimeMillis());它會根據當時的時間設定隨機數種子。任何時候我們都可以調用setSeed()來設定隨機數種子。

我們還可以利用其nextInt()來產生int類型的隨機數,nextLong()來產生long類型的隨機數。

4 執行時間的測量

當MIDlet運作時,隨時都可以利用System.currentTimeMillis()來取得目前時間與1970年1月1日零時 UTC時間(協調世界時)的差距,傳回值為long類型,而且以毫秒(Millisecond,千分之一秒)來表示。程序任何兩個地方調用System.currentTimeMillis()之後,將所得的結果相減,就是所經過的毫秒數。

5 日期處理

Java.util包之中,Calendar、Date、TimeZone是三個用來處理與日期相關功能的類。TimeZone類所代表的是時區,全球的統一時間稱做UTC(協調世界時),也就是說,在全世界任何時間點上,時間的表示都一樣,美國UTC時間10點就是台灣UTC時間10點整。全世界以格林尼治時間(GMT)為主,所以GMT與UTC是沒有時間差的。其它時區都會和GMT或UTC有個時間差。所以如果以時區來分的話,每個時區相同的時間有可能是不同的UTC。

Date類負責記錄與1970年1月1日零時 UTC時間(協調世界時)的差距,一般我們可以使用Date date = new Date(time) ;來產生,time就是與1970年1月1日零時 UTC時間(協調世界時)的差距,以毫秒來計。如果使用Date date = new Date() 來產生Date類,就如同調用了Date date = new Date(System.currentTimeMillis()) ;也就是Date會封裝進行new操作時的時間。Date類本身除了以毫秒存放與1970年1月1日零時 UTC時間(協調世界時)的差距外,本身沒有其它功能了。要從Date類解析出正確的年、月、日、星期幾、幾點、幾分、幾秒的信息,就必須依靠Calendar類才行。

Calendar無法用new產生,只能通過Calendar.getInstance()取得使用系統缺省時區與地區所建立的Calendar,或使用Calendar.getInstance(TimeZone tz),指定我們要使用的時區來產生Calendar。所以調用Calendar.getInstance(),實際上等同於調用Calendar.getInstance(TimeZone.getDefault())。

有了Calendar的實體之後,我們就可以利用其setTime()給定一個Date對象的實體,或是setTimeMillis()給定一個long類型的數值來設定Calendar的內容。

6 Theard的注意事項

(1)Thread的建立有兩種方法,第一是直接繼承Thread類,並實現其run()方法,這是上述范例所使用的方式。第二種是實現Runnable接口,並實現其run()方法。這兩種方法請參閱一般講解Java程序語言的書,都會有詳盡的說明。一般建議使用第二種方法,但是第一種方法比較簡單。

(2)啟動Thread時,請調用其start()方法。切莫因為實現run()方法就直接調用run(),否則無法達到多線程執行的效果。

(3)要結束一個Thread的執行,請利用自己定義的旗標(flag)。當外頭設定此旗標時,Thread自動離開run()方法,此時就會造成Thread結束。雖然在J2SE之中的Thread類有stop()方法可以結束Thread的執行,但是這個方法也已經被列為不建議使用(deprecated)的方法。

7 Timer與TimerTask

Java.util包之中有兩個類與工作排程非常有關系,它們分別是Timer與TimerTask。其中,Timer是一個定時器,可以設定成特定時間或特定時間周期產生信號。不過,只有Timer是沒有用的,必須配合TimerTask才有作用。Timer一旦與某個TimerTask產生關聯,就會在產生信號的同時,連帶執行TimerTask所定義的工作。

TimerTask的制作非常容易,任何一個類只要繼承TimerTask類,並實現其run()方法即可。Run()方法就是我們自行定義的工作,一旦Timer在特定時間或特定時間周期產生信號,run()方法就會被執行。我們會通過Timer的schedule()方法來設定特定時間或特定時間周期,並將它與某個TimerTask聯系(進行TimerTask的排程)。最後,可以使用Timer的cancel()方法來停止Timer,調用cancel()之後,Timer就會和TimerTask脫離關系。TimerTask本身也有cancel()方法。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved