1。系統參數的提取
MIDLet在運作時,必須通過java.lang.System.getProperty()函數來取得系統屬性。他們分別是:
(1)microedition.profiles;取得系統支援的所有Profile資訊
(2)microedition.configuration:取得系統所支援的Configuration資訊
(3)microediton.locale;取得系統目前所使用的地區資訊
(4)microediton.platform;MIDlet所在平台的名稱或型號
(5)microedition.edcoding:取得系統預設時使用的語言編碼資訊
2。Timer與TimerTask的使用
Timer是一個定時器,可以設定成特定時間或特定時間周期訊號。不過,只有Timer沒有用,必須配合TimerTask才有作用的。Timer一旦與某個TimerTask產生關聯,就會在產生訊號的同時,連帶執行TimerTask所定義的工作。TimerTask的製作非常容易,任何一個類只要繼承TimerTask類,並實現其run()方法即可。Run()方法就是我們自行定義的工作,一旦Timer在特定時間或特定時間周期產生訊號,run()方法就會被執行。
我們會通過Timer的schedule()方法來設定特定時間或特定時間周期,並將它與某個TimerTask聯絡,最後,您可以使用Timer的cancel()方法來停止Timer,調用cancel()之後,Timer就會和TimerTask脫離關係。TimerTask本身也有cancel()方法。
我們希望沒四秒鐘產生一次訊號,但是run()方法有時的確需要5.5秒完成工作,有時2.2秒就完成。程式如下:
MyTask4.java
import javax.microedtion.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
public class MyTask4 extends TimerTask
{ long lasttime;
public void run()
{ long now=System.currentTimeMillis();
System.out.print("Task4 Fire Time:");
System.out.print(now);
System.out.print(";Intervel:");
System.out.println(now-lasttime);
lasttime=now;
doSomething();
}
public void doSomething()
{ try
{ Random rdm=new Random();
int i=rdm.nextInt()%2;
if(i==0)
{ Thread.sleep(2500);
System.out.println("doSomething:2500 millisecond");
}
else
{ Thread.sleep(5500);
System.out.println("doSomething:5500 millisecond");
}
}
catch(Exception e){}
}
}
TimerTest4.java
import javax.microedtion.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
public class TimerTest4 extends MIDlet
{ Timer timer;
public TimerTest4()
{
}
public void startApp()
{ Form f=new Form("Test");
Display.getDisplay(this).setCurrent(f);
timer=new Timer();
MyTask4 mt=new MyTask4();
mt.lasttime=System.currentTimeMillis();
timer.schedule(mt,5000,4000);
System.out.println("Task Schedule Time:");
System.out.println(System.currentTimeMillis());
}
public void pauseApp()
{
}
public void destroyApp(boolean uncondition)
{ timer.cancel();
}
}