J2ME-定时器(TimerTask)使用及初探
来源:互联网 发布:网络进货渠道有哪些 编辑:程序博客网 时间:2024/05/16 10:55
最近完成个J2ME游戏,一直以来总想写点东西给大家~因为以前总是在索取,现在把J2ME的入门知识-定时器的相关知识以及我的一点体会-付出给大家,内容不多只是它的使用,希望对入门的J2ME开发者有所帮助。
首先,说下定时器的基本使用,以下内容摘自NOKIA 论坛里的一篇文章:
《为60系列平台设计Java应用》--定时器
各种定时器让各种应用能方便地规划任务,而不必对线程进行调配。使用线程通常需要更为复杂的设计,并需要更多的系统资源,对各种小设备而言,比较奢侈。
创建一个定时器的范例:
public class MyTask extends TimerTask{private int iCount;public MyTask(int aStart){super();iCount = aStart;}public void run(){iCounter--;System.out.println(“Counter is now ” + iCounter);if (iCounter == 0)cancel();}}
构建一个定时器并向其中添加MyTask:
MyTask myTask = new Mytask(50);Timer myTimer = Timer();MyTimer.schedule(myTask, 1000, 20000);
在这个范例中,每20秒就会调用一次MyTask的run()方法。
并不保证定时器任务一定按时执行。各个定时器任务依次发生。如果其中一个任务需时很长,下一个任务只能在当前任务完成之后再执行。对于循环执行的任务,最好保证run()方法能很快完成。
一个以上地定时器也是可能的,这样就可以将任务分配到几个定时器上。然而,使用多定时器要多加小心,因为每个定时器只运行自己的线程,同步可能是需要的。
上面就是定时器的基本用法,对于一些简单的定时器操作这样做就可以了,直接把要执行的代码放入Run中。对于逻辑结构复杂点的,需要多次执行Run方法的时候就要另想办法来做了。下面是我使用定时器的一个框架,实际上就是个面向对象的应用,比较简单也好理解,希望对大家有个帮助,也希望有不同见解的朋友共同交流。
同样要有个类来继承TimerTask:
import java.util.TimerTask;public class GAMETask extends TimerTask{private GameObject m_Object;public GAMETask(GameObject object){m_Object = object;}public void run(){m_Object.gameTask();}}
然后再定义一个GameObject接口:
public interface GameObject { public abstract void gameTask(); }
最后就是在你的Canvas类中使用了:
public class GameCanvas extends FullCanvas implements GameObject { //...... private static Timer m_Timer; private static byte runcase; public GameCanvas(MjMIDlet midlet, WhkRMS whkrms) { //...... } public void gameTask() { switch (runcase) { case 0: aaaGametask(); break; case 1: bbbGametask(); break; case 2: cccGametask(); break; }//分别实现各个方法,也就是Run里面要执行的东西,分情况来执行对应 的Run。
public void bbbGameTask() {
m_bFlash = !m_bFlash;
repaint();
m_Timer.schedule(new GAMETask(this), 500L);
}
public void keyPressed(int i) {
switch (runcase) {
case 1:
aaaPressed(i);
break;
case 2:
bbbPressed(i);
break;
}
}
//分别实现相应的按键Pressed()方法,可以在其中设置runcase的值,来控制程序。当然也
可在其他地方设置runcase来控制。
Public void aaaPressed(int i){
if(i==-7){
//.......
m_Timer.cancel();
runcase=2;
repaint();
(new Timer()).schedule(new GAMETask(this), 500L);
}}
public void paint(Graphics g) {
switch (runcase) {
case 0:
//......
Break;
case 1:
//......
case 2:
//......
}}}
整个的框架就是这样了~我用这个开发的是麻将类游戏,并不是整个游戏的框架哦~当然线程在整个游戏中也是要用到的,这里就不多谈了。有何意见请联系我:
zxhwolfe@hotmaill.com
- J2ME-定时器(TimerTask)使用及初探
- j2me-定时器(timertask)使用及初探
- J2ME-定时器(TimerTask)使用及初探
- Android 定时器TimerTask 简单使用
- TimerTask 定时器
- Android 定时器的实现方式(TimerTask、Handler)及 Handler使用解析
- Android 定时器的实现方式(TimerTask、Handler)及 Handler使用解析
- Android中使用定时器TimerTask类介绍
- 使用Handler和Timertask实现定时器
- Java 中Timer和TimerTask 定时器使用
- Java定时器Timer和TimerTask的使用
- 在J2ME中使用Timer和TimerTask来实现多线程
- 在J2ME中使用Timer和TimerTask来实现多线程
- 在J2ME中使用Timer和TimerTask来实现多线程
- j2me 使用Timer和TimerTask来实现多线程
- 黑马程序员 日记一:传统定时器Timer及TimerTask。
- JAVA中定时器TimerTask的使用小例子
- 多线程编程2-----TimerTask定时器类的使用
- Python如何进行中文注释
- 走向成功:成功人士必备的五大EQ
- frame,iframe,frameset用法和区别
- IE与firefox下的css区别
- 对XML文件进行合并 并读入到DataSet
- J2ME-定时器(TimerTask)使用及初探
- STL容器用法之List(转载)
- 将“Drag a column header to group by that column”去掉
- Java 通过 JNA (Java Native Access) 获取、设置 Windows 操作系统的文件创建时间、文件修改时间、文件访问时间
- 2010 最牛B的个性签名
- 基于.Net的单点登录(SSO)解决方案
- JQUERY图片轮转的改进版本
- [ORACLE] ORA-01555的异常分析 ,都是大事务惹的祸
- 人生最珍贵的一则故事