Nokia S60的几个问题
1. 不能每帧调用 System.gc(),否则严重降低fps
2. Nokia S60机器的不同机型对于translate 和 setClip的处理不一样。在Nokia N-Gage QD等机型中,setClip是相对于translate以后的坐标计算的,而在Nokia 6600,6670等机型中,setClip不受translate的影响,永远只相对于屏幕左上角(0,0)点计算。所以如果在Nokia6670中,使用先translate再setClip的方法画子图,则会出现错误。为了统一代码,在NokiaS60中不要使用translate,即使使用,两次translate之间不要进行setClip.修改后的画子图函数为:
public static void drawSubImg(Graphics g,Image img,int x,int y,int sx,int sy,int swidth,int sheight)
{
g.setClip(x,y,swidth,sheight);
g.drawImage(img,x-sx,y-sy,GLT) ;
g.setClip(0,0,width,height) ;
}
3. 部分Nokia机型(6600,6670等)退出后报错null pointer exception的解决方法
不要在在主while循环中调用destroyApp,而改成检测一个标志,退出主循环后再调用destroyApp
boolean exit ;
...
while(!exit){
...
if(...){
exit = true ;
}
...
}
destroyApp(true)
注:可在destroyApp内部调用notifyDestroyed