MIDlet生命周期的理解及游戏死机问题
学习j2me,首先要了解midlet的生命周期。本文主要是深入了解一下midlet的生命周期。
首先在你运行一个程序的时候,jam会调用该midlet的构造函数来生成midlet的对象,然后被jam置于paused状态。一旦jam认为这个midlet对象可以执行时,就会调用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()放到这里,再来电返回时就会出问题。
}
}
或者
[iocblog.net 来源]
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();
}
}
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。