MIDlet生命周期的理解及游戏死机问题(2)

分类: J2ME   出处:iocblog整理  更新时间:2008-09-15   添加到收藏  

  哇,来电话了,或者你退到系统菜单。如nokia s60的手机。
  
  hidenotify()首先会被调用,接着pauseapp()再被调用。
  
  这么快,打完了,返回时:先调用shownotify(),接着调用paint()函数一次,最后才是调用startapp()函数。
  
  关于run()和paint()也可以使用display.callserially(this)语句。这个以后有时间了再说。
  
  明白了生命周期,再来看死机问题。我说的死机问题,多是来电话返回时死机。其实只要找到了问题,一切就变的很简单。
  
  为什么死机,归根结底还是程序问题。
  
  graphics mg;//定义的全局参数
  
  paint(graphics g){
  
  mg = g;//有的程序这样写,if(mg ==null){mg =g:}这样对于n7610系列就会出错。
  
  mg.drawstring();
  
  switch(case){
  
  case game_mune:
  
  drawa();
  
  break;
  
  case play:
  
  drawb();
  
  break;
  
  default:
  
  break;
  
  }
  
  }
  
  /*下面的画图函数一定要放到paint()函数里调用,不要在别的地方调用,如run()里面,上面说过,程序暂停之后返回,会先paint()一次,如果在别的地方调用就会出现问题。
  
  */
  
  public void drawa(){
  
  mg.drawstring();
  
  }
  
  public void drawb(){
  
  mg.drawstring();
  
  }
  
  按照上面的写法一般不会出现死机问题。当然,你也可以不定义全局的mg,可以把g单独传到各个画图子函数中。如,
  
  paint(graphics g){
  
  g.drawstring();
  
  switch(case){
  
  case game_mune:
  
  drawa(g);
  
  break;
  
  case play:
  
  drawb(g);
  
  break;
  
  default:
  
  break;
  
  }
  
  }
  
  public void drawa(graphics mg){
  
  mg.drawstring();
  
  }
  
  public void drawb(graphics mg){
  
  mg.drawstring();
  
  }[iocblog.net 来源]

上一页 [1] [2]



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。