这是很久前另一个BLOG上的,现在不用了。转过来吧,方便查看...
在用J2ME的低级UI时,所有的界面绘制要靠自己来实现,主要是在paint消息中来做,这里涉及几个接口:paint,repaint,serviceRepaints,callSerially,我搞了一段时间才把它们弄明白。
paint
paint相当于是个回调函数,被J2ME主线程(处理UI和事件)来调用,任何时候我们都不能自己直接调用paint,程序在paint里面按部就班的画出界面即可,paint会带一个Graphics参数,用这个graphics去作图就可以了。
现在的很多J2ME平台已经默认支持双缓冲,所以在paint执行时,实际上界面并没有画出,而是等到paint执行完成后,一次性刷新到屏幕上的,不过这是和平台相关的。
repaint
这个是通知系统,我们需要刷新界面了,但仅仅是个通知,repaint会立即返回(无阻塞),paint会在合适的时候被系统调用,所以paint
和repaint不是一一对应的,有一个repaint并不意味着一定会触发一个paint,多个repaint可能会被合并到一个paint调用。
如果在paint里面调用repaint,那么就意味着这个paint结束后会被再次调用,这在有些需要连续不段的刷屏的程序中可能有用,不过显然不太合适,比如下面这种代码。
public void paint (Graphics g) {
repaint();
}
serviceRepaints
如果调用serviceRepaints,则会直接立刻重绘界面,阻塞式调用,直到paint完成。所以如果我们写出下面的paint接口:
public void paint (Graphics g) {
repaint();
serviceRepaints();
}
后果相当于递归调用,并很快造成内存耗尽(Out of
memory)异常,因为serviceRepaints里面又会直接调用paint(),所以使用serviceRepaints一定要小心,可以在某
些地方使用serviceRepaints,但绝不能在paint里面调用。
callSerially
这个接口可以将一个Runable的接口抛在系统队列尾部,处理完消息之后,执行这个Runable接口的run,这在有些使用paint绘制的程
序中会用到,可以在paint完以后,通过callSerially触发run接口,表示界面已经画完,可以做别的事情了,又不会阻塞系统队列。
分享到:
相关推荐
随着软件的增大paint()方法的优化是必不可少的
基于J2ME的旋转菜单示例程序,一个完整的实例,直接可以添加到你的工程中
整数到字节数组的转换 字节数组到整数的转换
J2ME开发 J2ME开发 J2ME开发 J2ME开发
j2me jsr 184 实现人脸模型的旋转
J2ME API J2ME API J2ME API J2ME API J2ME API
j2me入门教程j2me入门教程j2me入门教程j2me入门教程j2me入门教程
J2ME培训教程,以前学JJ2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程2ME发的一个PPT,内容还可以,需要的朋友不要客气J2ME...
J2ME游戏开发 J2ME游戏开发 J2ME游戏开发
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
j2me手机浏览器 j2me手机浏览器 j2me手机浏览器
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
本资料本人找的挺辛苦的,绝对是不错的参考。
j2ME初学Demo j2ME demo j2me demo j2ME实例
记载了J2ME游戏如何移植成android游戏的方法。给很多拥有J2ME游戏的朋友想要将手中的资源再次利用起来就下载来看看把。。。
j2me教程j2me教程j2me教程j2me教程
一个J2ME计算万年历的简单程序
J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码
J2me3D转场,游戏中可以使用。jar包内附有源码。 详情请查看博客http://blog.csdn.net/harry0310/archive/2010/04/05/5452791.aspx
近年来伴着Android智能手机的迅速崛起,如何迅速移植已有的J2me应用到Android让其发挥余力,便成了开发人员急于解决的问题,借助本文档你可以非常快速地将原J2ME应用转化为APK应用。还等什么,马上行动吧....