第一,
下面的代码在索爱机型上可以运行,在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();
也会导致立即退出。
以上虽然模拟器可以运行,但是真机是不允许的。