动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.JAVA网络编程基础.
.基于Spring框架的WebSphere应用开.
.为Struts的测试辩护!.
.SpringReference.
.利用JBuilder开发调试Servlet.
.Java,Beans 和 关系数据库 的 镜.
.dom4j中文问题解决方法。.
.用 WebSphere Studio 创建 JSF 提.
.Java认证宝典v1.0之SCJD篇.
.编程基础入门:Java修饰词的总结.
.java中对于文件属性的一些操作.
.通过Struts应用MVC设计模型.
.sup 方法.
.21天学通J2EE1.
.步入SWT/JFace世界,你还等什么.
.JXTA Java标准版本 2..
.Java 数据对象(JDO)介绍(二).
.利用JAVA API函数实现数据的压缩.
.[JAVA100例]070、使用JDOM解析XML.
.审查Java代码的十一种常见错误.

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

发表日期:2008-1-5 |



  学习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()放到这里,再来电返回时就会出问题。
  
  }
  
  }
  
  或者
  
  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)语句。这个以后有时间了再说。
  
  明白了生命周期,再来看死机问题。我说的死机问题,多是来电话返回时死机。其实只要找到了问题,一切就变的很简单。
  
  为什么死机,归根结底还是程序问题。
  
  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();
  
  }
上一篇:在JAVA中连接Sybase数据库(例子) 人气:360
下一篇:用Apache Velocity模板引擎速造网站 人气:768
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号