在开发索爱手机的J2ME程序时, 有时并不是只有内存泄漏问题会导致手机白屏或重启, 因为手机本身虚拟机实现上的缺陷而导致的重启现象也很多。
请看下面的代码
String obj = "todo";
boolean pause = false;
new Thread(new Runnable() {
public void run() {
while (true) {
if (pause) {
try {
obj.wait();
} catch (Exception e){}
}
}
}
}).start();
public void wakeup() {
obj.notify();
pause = false;
}
public void pause() {
pause = true;
}
当pause为true时, 线程会暂停在obj上,因为Java中String是对象。所以可以让一个线程去wait在这个对象上。等待其它线程去wake up。这些代码在模拟器上,和Nokia N81上都没问题。 可是在索爱k800i的机器上就立刻白屏重启。而且听说网上有论坛专门讨论过这个问题,确实在索爱的手机上存在。希望索爱手机在将来能更完善一下。
对于这个问题解决方法就是换成一个非基本数据类型的对象。比如你自己new 一个自定义类的引用