问题
每个使用Java ME工作的人必定会碰到在切换可显示的物件时这个“一闪而过(flicker)”的问题,例如从已经在View的一个画布设定一个新的画布,你会仔细想过可显示的画布不应该一次又一次地设定,我们在整个应用程式中应该只使用一个画布设定,而这样会产生一个长期不可管理的Canvas类别,这个类别会有很长的键盘按下/释放、绘製方法及一堆的Switch case / if then else等等,这样可会影响程式的效率及可读性。
解决方桉
我们必须以这样的一个方式设计一个解决方桉,这个方桉就是只有一个Canvas(BaseCanvas – 键下面的程式码)只有一次被midlet设为目前可显示的,且对不同的应用程式模组使用物件导向方法来建构不同的Canvas萤幕,这些模组可以藉由一个共同的介面类别物件在BaseCanvas传递而不用flicker,每个萤幕处理绘製及式键的程式码用这样不同的萤幕类别来分隔,这样可因此变得较易阅读及效率。
优点
容易扩展
教友效率的程式码
较可阅读的程式码
较低的记忆体佔用
程式码
BaseCanvas會在下面
import javax.microedition.lcdui.*;
public class BaseCanvas extends Canvas
{
/**Singleton Instance**/
private static BaseCanvas mCanvas;
/** Singleton Accessor Method with lazy initialization**/
public static Canvas getCanvas()
{if(mCanvas==null)
mCanvas=new BaseCanvac();
return mCanvas;
}
public CanvasScreen setCurrentScreen(CanvasScreen aCs)
{
CanvasScreen old=mCs;
mCs=aCs;
return old;
}
public void paint(Graphics g)
{
if(null!=mCs) mCs.paint(g);
}
public void keyPressed(int keyCode)
{
if(null!=mCs) mCs.keyPressed(keyCode);
}
public void keyRepeated(int keyCode)
{
if(null!=mCs) mCs.keyRepeated(keyCode);
}
/**Stratergy Object **/
private CanvasScreen mCs=null;
private BaseCanvas()
{
setFullScreenMode(true);
}
}
CanvasScreen介面會在下面
import javax.microedition.lcdui.*;
public interface CanvasScreen
{
public void paint(Graphics g);
public void keyPressed(int keyCode);
public void keyRepeated(int keyCode);
}
所有應用程式不同的模組的其他螢幕或canvas類別會在下面
(例如,SplashScreen)
import javax.microedition.lcdui.*;
public class SplashScreen implements CanvasScreen
{
BaseCanvas bc;
public SplashScreen()
{
this.bc=BaseCanvas.getCanvas();
bc.setCurrentScreen(this);
// do what you want to paint on splash screen and load your assests.
}
public void keyRepeated(int keyCode){ }
public void paint(Graphics g)
{
// paint your Splash Screen
// paint Loader(g);
}
public void keyPressed(int keyCode)
{
// do what you need
}
private void repaint()
{
bc.repaint();
}
}
所有其他的萤幕类别将实做CanvasScreen介面,来执行他们自己的绘製及事件处理。
执行绪的安全
上面所说的存取BaseCanvas类别不是执行绪安全,不同执行绪的同时存取会造成不可预测的结果,所以假如一个应用程式从不同的执行绪存取这个类别那麽存取它应该是同步的。
分享到:
相关推荐
- **Java ME背景**:Java ME是Java技术为了适应嵌入式和移动设备而诞生的,它允许开发者在手机、电视、家用电器等设备上开发应用程序。 - **配置简介**:Java ME由配置、简表和Profile组成,配置定义了硬件和操作...
JavaME(Java Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。LWUIT(Lightweight User Interface Toolkit)是JavaME中一个轻量级的用户界面框架,它为...
### Java手机程序设计入门:MIDP图形处理详解 #### 引言 MIDP(Mobile Information Device Profile)是Java ME平台的一部分,专为移动设备如手机和平板电脑设计。对于初学者而言,掌握MIDP图形处理技术是至关重要...
1. **Display类**:Display类在每个MIDlet(Mobile Information Device Profile应用程序)中只有一个,它是用户界面的顶级容器,负责管理所有的显示ables(如Form、Canvas等)。选项B描述正确。 2. **获取Display...
- **Jar文件**: 包含了J2ME应用程序的字节码,即编译后的Java类。Jad文件和Jar文件一起分发,使得设备能够正确安装和运行程序。 4. **源代码解析** - **MIDlet 类**: 作为J2ME应用程序的入口点,MIDlet类继承自`...
【JavaME开发绘制文本框TextEdit】在JavaME平台中,为用户提供文本输入功能是一个常见的需求。在《JavaMe连载(3)-也说MVC设计模式》一文中提及...理解这一实现方式对于在JavaME平台上开发具有输入功能的应用至关重要。
Java帮助文档,通常被称为Java API文档,包含了Java平台标准版(Java SE)、企业版(Java EE)和微服务版(Java ME)的所有类、接口、方法和异常的详细信息。这些文档是开发者日常编码时的重要参考资料,能够帮助...
学习JavaSE是掌握Java编程的基础,也是进一步学习JavaEE(企业版)和JavaME(移动版)的前提。 【HTML】 HTML(HyperText Markup Language)是网页设计的基础,用于定义网页的结构和内容。HTML5是当前广泛使用的...
Android SDK(软件开发工具包)提供了开发Android应用程序所需的工具和库。开发者使用Java或Kotlin语言编写Android应用,并通过Android Studio集成开发环境进行编译、调试和发布。Android API提供了一系列的框架和...
综上所述,MIDP 2.0为Java ME开发者提供了更强大的工具和功能,以创建具有高级特性的移动应用程序。通过理解和掌握这些知识点,开发者可以充分利用MIDP 2.0的潜力,开发出适应各种移动设备的应用。
它提供了资源受限的设备上运行Java应用程序的能力,特别适合于手机、PDA和其他小型设备。 #### 游戏机制与实现 游戏的核心机制非常简单:玩家通过按键来识别并匹配随机生成的数字,从而获得分数。游戏的主要逻辑在...
Java ME(微型版),用于嵌入式设备。学习Java时,你需要掌握基础语法、类与对象、封装、继承、多态、异常处理、IO流、集合框架、多线程、网络编程以及Swing或JavaFX等图形用户界面(GUI)开发。 **JavaScript知识...
首先,我们要理解MIDP(Mobile Information Device Profile)是Java Micro Edition(Java ME)的一个子集,用于开发功能手机和小型设备上的应用程序。MIDlet是运行在MIDP平台上的Java应用程序,而SnakeMIDlet很显然...
根据提供的部分内容,我们可以推断出该文档主要涉及的是Java ME平台相关的开发知识和技术要点,特别是针对移动设备的应用程序设计与实现。以下是对这部分内容的详细解释和扩展。 ### J2ME概述 Java 2 Platform ...
按钮是用户与应用程序交互的关键元素,其视觉样式直接影响用户的体验。本文将深入探讨如何在不同的编程环境中改变按钮的前景色,以提升应用界面的美观度和易用性。 在Windows API(应用程序接口)中,我们可以使用`...
在提供的部分代码片段中,我们可以看到该程序涉及到了多个类与接口的使用,如`Canvas`、`Runnable`等,同时导入了多个Java基础库包,包括但不限于`java.io`、`javax.microedition.lcdui`等,这些都为实现游戏的基本...
在Android开发中,"画图关于click"的标题可能指的是如何在用户界面上创建图形元素并监听这些元素的点击事件。...在Android应用中,图形...开发者需要了解并熟练运用这些知识,以创建具有丰富交互性和视觉效果的应用程序。
在实际应用中,图表可以用于展示应用程序的数据统计,如健康应用的心率变化、金融应用的股票走势,或者是游戏应用的得分排名。通过有效的数据可视化,用户能够更直观地理解信息,提升用户体验。 综上所述,"Android...
在Eclipse中集成Sun WTK可以帮助开发者在开发过程中快速测试和调试应用程序。安装和配置Sun WTK通常涉及下载安装包、设置环境变量以及在Eclipse中配置相关的模拟器。 **1.3.2 加载Nokia Developer's Suite 2.2** ...
MIDP 2.0(Mobile Information Device Profile 2.0)是Java ME平台的一部分,专为移动设备设计的一套标准API集合。MIDP 2.0在MIDP 1.x的基础上进行了大量的改进与扩展,提供了更丰富的用户界面组件、游戏开发支持...