第一,
下面的代碼在索愛機型上可以運行,在nokia s60模擬器上也可以運行,唯獨不能在nokia 7610上運行,程序會自動退出:
new Thread(this, "Menu thread").start();
必須改寫為
Thread thread;
(thread = new Thread(this)).start();
方能在真機上運行。
這種程序自動退出的問題,有時候是因為你根本猜想不到的代碼導致的,這時候只能通過二分排除法(不斷地注釋代碼來縮小代碼范圍)來判定了。
第二,再譬如說,
你的代碼中有對double的使用,比如這種代碼:
double alpha = (double)Math.abs(i - m_canvasWidth / 2) /
(double)m_canvasWidth;
但是,注意一點,CLDC1.1才開始支持Math,“Math functions in java.lang package is available only since CLDC-1.1”。所以,如果你一旦在CLDC1.0的nokia手機上使用,那么,即使你用了try/catch捕獲異常,程序也會自動退出。
這時候你也不要驚詫。
第三,
Thread thread;
(thread = new Thread(this)).start();代碼可以運行。
但是Thread thread;
(thread = new Thread(this, "Menu thread")).start();
就會導致Nokia真機立即退出。
同樣,
Thread thread;
(thread = new Thread(new Runnable()
{
public void run()
{
m_inputHandler.handleStringInput(input);
}
}, "inputHandler")).start();
也會導致立即退出。
以上雖然模擬器可以運行,但是真機是不允許的。