J2ME编程最佳实践之屏幕导航[Java编程]
本文“J2ME编程最佳实践之屏幕导航[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
除了游戏程序,在普通的MIDP利用程序中,普通会有很多个Screen或Canvas,这些屏幕普通靠号令来实现切换,比方用户点击“Next”应当跳到下一屏,点击“Back”应当返回到上一屏.当屏幕数目相当可观时,如安在各个屏幕之间导航就值得好好考虑了.
经典的MVC情势可用于屏幕导航,Model用于存储利用程序数据,而View则是各个Displayable对象,Controller需求单独的一个类实现.由于MIDlet类本身在生命周期内就只有一个实例,因此MIDlet类就非常适合作为Controller.SUN在blueprints示例程序SmartTicket中利用了非常复杂的MVC,完好可以满意MIDP利用程序的导航需求,但是可以看出,缺陷是很明显的:
一是每一个事件都需求一个唯一标识,switch-case语句会随着屏幕的增添而增添,Controller变得难以保护.二是Controller引用了全部的View,这些View在程序启动时就被初始化招致很大的内存开销,而不管它们能否会被显示.三是大量的Model对象以及非常处理都使得整个利用程序的逻辑大大复杂.
实际上,MIDP利用程序的很多屏幕并不需求复杂的Controller和Model,我们的目标是满意基本的机动性的同时保持构造简单.因此,别的两种导航办法是用二叉树和仓库实现,这里我们只谈论用仓库实现的MIDP导航框架,其基本思惟是:每当行进到下一个屏幕时,先将下一个屏幕压栈,然后再显示;当返回到上一个屏幕时,先从仓库中弹出当前屏幕,再从仓库中取出上一个屏幕并显示.因此,每个屏幕只需求指定要显示的下一个屏幕,而不需记着上一个屏幕.这种仓库导航模子分外合适有规律的“行进”、“撤退”屏幕.
由于MIDlet类运行期只有一个实例,因此,利用MIDlet类作为掌握器相当符合.此外,我们在一个静态变量中保存了MIDlet实例,使得拜候MIDlet越发便利:
public class ControllerMIDlet extends MIDlet {
private static ControllerMIDlet instance = null;
private Display display = null;
private Stack ui = new Stack();
public ControllerMIDlet() { instance = this; }
protected void startApp() {}
protected void pauseApp() {}
protected void destroyApp(boolean unconditional) {}
public static void goBack() {
instance.ui.pop();
Object obj = instance.ui.peek();
instance.display.setCurrent((Displayable)obj);
}
public static void forward(Displayable next) {
instance.ui.push(next);
instance.display.setCurrent(next);
}
}
让我们更具体地研究一下实际的利用程序大概呈现的几种屏幕跳转情形.最简单的情形是,从一个屏幕行进到另一个屏幕,且返回时仍回到原先的屏幕,这种情形完好符合仓库的FIFO特点,可以直接调用ControllerMIDlet的forward和goBack办法便可.比方,要显示一个帮忙屏幕:
关于一个联网的利用程序,另一种情形是有一个暂时的等候屏幕.下面是一个在线浏览图片的屏幕:
以上是“J2ME编程最佳实践之屏幕导航[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |