Nokia S60错误查询 For J2ME Developer

 
Nokia S60 错误查询 For J2ME Developer
 
* 错误:
     游戏运行了比较长一段时间后,无法绘制图片或者抛出OutOfMemoryError,游戏崩溃。
 
* 可能的原因:
Nokia S60对J2ME的垃圾回收支持不行,它的drawRegion()(MIDP2.0)方法,产生的图片不会被很好的回收,会不停的消耗内存,导致内存溢出,游戏崩溃。
 
 
*********************
 
 
* 错误:
游戏运行速度异常的慢
 
* 可能的原因
过于频繁的使用System.gc(),例如,每个循环调用一次(这样会导致机器很慢)。
System.gc()会严重影响程序的运行效率,慎用。
 
 
**********************
 
 
* 和标准J2ME SDK 不同
S60 的sdk不支持String.equalsIgnoreCase()方法。
 
--------------------------
项目设置已保存
正在生成 "S60Test"
G:/WTK22/apps/S60Test/src/S60Test.java:23: cannot resolve symbol
symbol : method equalsIgnoreCase (java.lang.String)
location: class java.lang.String
    if( s1.equalsIgnoreCase(s2) ){
          ^
1 error
com.sun.kvem.ktools.ExecutionException
生成失败
------------------------
 
 
**********************
 
* 错误:
播放的声音被截短了。只有音乐的一部分在循环播放。
 
* 可能的原因
S60手机利用回调实现media.Player,在别的线程中频繁的开关声音,使得Player.start()重新开始的地方被设在音乐中的某个地方,前面的部分“泄漏”了。
 
有问题的代码:
public void playerUpdate( Player player, String event, Object eventData ){
    if( event == PlayerListener.END_OF_MEDIA ){
        if( player == bgmPlayer ){
            try{
                player.start();
            }catch(Exception e){}
        }
    }
}
调整后的代码:
public void playerUpdate( Player player, String event, Object eventData ){
    if( event == PlayerListener.END_OF_MEDIA ){
        if( player == bgmPlayer ){
            try{
                player.setMediaTime(0);  // 复位 start() 开始标志
                player.start();
            }catch(Exception e){}
        }
    }
}
 
 
**********************
 
* 错误
[Loaded com/ltt/gknight/Gknight]
[Loaded com/ltt/gknight/GknightCanvas]
java.lang.Error: Static initializer: java.lang.NullPointerException, null
 - java.lang.Class.throwError(), bci=57
 - java.lang.Class.initialize(), bci=221
 - java.lang.Class.forName(), bci=0
 - com.symbian.midp.runtime.MIDletExecutor$MIDletConstructorThread.run() , bci=43
Uncaught exception: java.lang.RuntimeException: java.lang.Error: Static initializer: java.lang.NullPointerException, null
 - com.symbian.midp.runtime.MIDletExecutor$MIDletConstructorThread.run() , bci=183
 
* 可能的原因
 
在MIDlet定义static的Form对象的同时实例化对象,例如,
 
public class Gknight extends MIDlet {
    public static Display display = null;
    public static GknightCanvas canvas = null;
   
    public Form frm = new Form("P");
   
    public Gknight(){
        display = Display.getDisplay(this);
        canvas = new GknightCanvas(this,display);
    }
 
    protected void startApp() throws MIDletStateChangeException {
        if( canvas != null ){
            display.setCurrent(canvas);
        }
    }
 
    protected void pauseApp() {
    }
 
    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    }
}
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值