Board logo

标题: Java嵌入式开发Palm OS程序之一 02 [打印本页]

作者: samwalton    时间: 2014-3-25 17:13     标题: Java嵌入式开发Palm OS程序之一 02

最后, onEvent方法进行事件处理:首先,这个事件对象本身被查询,以确定事件类型。在本例中我们想知道它是否是一个 PRESSED事件。(其他类型包含 FOCUS_IN、 FOCUS_OUT、 TIMER和 WINDOW_CLOSED )。这些都定义在 ControlEvent类中,是扩展事件。如果这个事件和我们要寻找的事件类型匹配,然后我们就可以确定激活事件的对象。在我们的 ContactManager应用程序中,我们只有要响应按钮按下的动作。所以如果用户轻点按钮激活事件,然后我们就可以执行代码来查寻目录中的姓名。

  定义在 MainWindow类中的其他有用的方法是 onStart和 onExit。onStart方法可能包括初始化代码;它在构造程序完成之后被调用。应用程序退出先要调用onExit方法,这时可以执行必要的清理工作比如写入未保存的数据。

编译应用程序

  一个应用程序要在 Palm OS中运行,就要把 Waba类文件编译成.prc文件,你需要调用 Waba带的两个程序: warp和 exegen。这两个文件都可以在WABA安装目录下的 bin目录下找到。warp程序创建一个 WRP文件和一个 PDB文件。WRP文件对一个 Palm设备来说没有用,但是我曾在第一篇文章中提起过, Waba也可以运行于 Windows CE, WRP文件就用于此处。Warp程序将为 PDB文件产生一个默认的 creatorID,但是可以用 /c选项自己指定一个creatorID。这个创建者表示号是一个四字节的标识符,是 Palm OS使用来把应用程序和数据联系在一起的。如果你发布的是一个商业应用程序,最好使用唯一creatorID,这样你的应用程序和数据就不会和别人开发的其它应用程序有冲突,你还可以在 PalmOS网站上注册一个 creatorID。

  下列命令可以从我们的 ContactManager类中创建一个 pdb文件。


warp c /c cnTc ContactManager *.class


  第一个 c告诉 warp创建 PDB文件,另一个标志是l, 用于列出PDB文件的内容。另外一个标志是 L,用于列出 PDB文件的内容。/c设置cnTc为与 PDB文件关联的 creatorID。下一个参数是 PDB文件将要调用的内容,在本例中,是 ContactManager。最后必要的类文件也应包括在 PDB文件中。我们的 ContactManager应用程序只有一个类,因此没有必要规定通配符。可是如果这个应用程序有许多类,这个语法就能添加所有的类到PDB文件中去。

  为了使你的应用程序在 Palm OS上可以执行,你还需要运行Exegen程序。这将创建一个PRC文件,它把你的应用程序的切入点提供给 Palm OS,Exegen命令行参数看上去像下面列出这样:


Exegen [options] exefile main-window-class warpfile [warpfile2...]


  对于我们的 ContactManager应用程序,我们应运行:


Exegen ContactManager ContactManager ContactManager


  这条命令规定, PRC文件名将为 ContactManager,我们扩展 waba.ui.MainWindow类得来的类称作 ContactManager以及 warp文件包括我们的类被称作 ContactManager。可见,我们必须先运行warp程序然后再运行 Exegen。

  这些操作都完成后,我们将得到一个PDB文件和一个PRC,你可以把它们上传到 Palm设备中,但是也可以在 Palm OS模拟器中测试。Palm OS模拟器,简称 POSE,是一个推荐工具,有助于编译-改编-运行的整个环节。在模拟器中运行应用程序比在真正的设备中运行要简单多了,所以在调试阶段一般都使用模拟器。

  当然在你运行这个应用程序之前,你必需先下载 Waba虚拟机,下载 waba.prc和 waba.pdb文件。

  用于规定 Exegen的其他选项列于下表:


/h指定应用程序主窗口的高度
/i指定 PalmOS PRC图标 (例如:/i sample.bmp)
/l指定类堆栈的大小 (例如:/l 10000)
/m指定对象堆栈的大小 (例如:/m 20000)
/pWindowsCE下包含 warp文件的目录的全称路径
/s指定堆积的大小 (例如:/s 2000)
/t指定本地堆积的大小 (例如:/t 50)
/w指定应用程序主窗口的宽度


  可见,有好几个选项允许你优化应用程序使用的内存。根据经验,这些选项使用的好坏,可以产生很大的差异。例如,如果没有足够大的类堆栈,键盘就不会显示,而且抛出一个异常。

  我们可以把我们刚才那个 exegen命令稍稍改一改,如下:




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0