怎样优化J2ME程序当中的paint()函数

我们经常会遇到这样的问题,在模拟器上跑得很好的程序在实际的手机上却很慢,甚至运行不了,这大多数是因为重画机制的使用不当所致,J2ME中的paint()函数起到了画屏幕的作用,往往在需要动画的情况下非常频繁地需要调用,而且在一些低端手机或移动设备上面,对于paint()函数的频繁调用会引起相应时间长甚至无法正常工作等问题。所以,对于paint()函数的优化就显得特别重要。这里,我们提出几点优化paint()函数的方法和注意事项,在编程中大家可以参考:
1.不要在paint()函数当中使用耗时的操作,比如:
    try{
         Image image_Splash = Image.createImage("/back.png");
         g.drawImage(image_Splash, 0, 0,Graphics.TOP | Graphics.LEFT);
     }
     catch(Exception ex) {
     }
  其中的创建图片的方法由于需要IO操作非常费时,因此要尽量避免,创建操作只在初始化的时候做一遍。
2.使用像素较小的图片,一般来书,颜色种类少的图片显示时间就少,因此,尽量避免使用256色以上的图片,一些色调丰富,过度缓慢的图片往往需要 多种像素来满足需求,因此,尽量使用卡通图片,或者转换成256或16色的图片,会减少绘图时间。
3.局部刷新, 每次的重画repaint()都要调用paint(),而并不是每一次repaint()都要重画整个屏幕,因此有时候之需要重画部分屏幕即可,这又有两种方法可以实现,第一种是利用Clip,Clip是一个矩形的绘图区域,当重绘时,仅仅重绘这个区域以内的内容,而不管其他部分,因此可以节省操作,可 以通过setClip()等函数设定绘图区域。
  另外可以通过repaint( x,y,width,height )来重画指定的某一个区域,这个函数实际上也是设定了某一个重绘Clip(),不过使用起来会更加方便。
4.减少repaint()的次数,尽量只在产生作用的时候才重画。
5.将paint()函数的部分内容提到外面来做,使得重画减少计算量和操作。
6.使用双缓存技术,某些设备本身就支持双缓存技术,判断设备是否支持双缓存可以用Canvas类的isDoubleBuffered()方法。实现双缓存可以使用Image 类的可变图像技术。如,利用:
    image = Image.createImage( width, height );
    Graphics g = image.getGraphics();

时间: 2024-09-22 13:50:28

怎样优化J2ME程序当中的paint()函数的相关文章

优化J2ME程序大小

要把J2ME程序与J2SE程序区分开来,其依据就是J2ME运行所处的受限环境.多数J2ME系统的主要受限条件就是可以存储和运行程序所需内存的大小.例如,许多MIDP设备限制应用程序的尺寸不大于50K,这远远不及Server端J2SE运行环境下那些成兆的程序.实际应用中,程序会很容易超出这些限制条件.通过本篇您将学到一些减小程序尺寸大小的技巧,并在下面的例子中实践这些技术.这个例子MIDlet仅仅显示一个文本框并在其内容改变时发声. package com.j2medeveloper.techti

优化J2ME中的paint()函数

我们经常会遇到这样的问题,在模拟器上跑得很好的程序在实际的手机上却很慢,甚至运行不了,这大多数是因为重画机制的使用不当所致,J2ME中的paint()函数起到了画屏幕的作用,往往在需要动画的情况下非常频繁地需要调用,而且在一些低端手机或移动设备上面,对于paint()函数的频繁调用会引起相应时间长甚至无法正常工作等问题.所以,对于paint()函数的优化就显得特别重要.这里,我们提出几点优化paint()函数的方法和注意事项,在编程中大家可以参考: 1.不要在paint()函数当中使用耗时的操作

J2ME程序开发全方位基础讲解汇总

程序     一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识:   1.Java语法基础:包括基本数据类型.关键字.运算符等等   2.面向对象的思想:类和对象的概念,继承和多态等等.   3.异常处理   4.多线程 J2ME

SQL Server 利用锁提示优化Row_number()-程序员需知

原文:SQL Server 利用锁提示优化Row_number()-程序员需知 网站中一些老页面仍采用Row_number类似的开窗函数进行分页处理,此时如果遭遇挖坟帖的情形可能就需要漫长的等待且消耗巨大.这里给大家介绍根据Row_number()特性采用特定锁Hint提升查询速度.   直接上菜   脚本环境可在SQL Server优化技巧之SQL Server中的"MapReduce"找到   如下查询在分页中比较常见 set statistics time on select *

java Jpanel调用另一个Jpanel时的paint函数异常

问题描述 想在java里面的一个jpanel里面调用另一个jpanel,发现这个第二个jpanel里面的paint函数有异常,是咋回事呢?classPacketextendsJPanel{privatedoubles_x,s_y,e_x,e_y;privateStrings_ID;privateDoublemove_time;privatedoublea,b,c;privatedoublereceiver_sped;privatedoublestep;privateintx,y;publicPa

对一个图片我用paint函数g.drawImage画出来,但是我要把制定一些区域的亮度升高,其余亮度不变,java 代码怎么写?

问题描述 对一个图片我用paint函数g.drawImage画出来,但是我要把制定一些区域的亮度升高,其余亮度不变,java代码怎么写?,先谢谢大家了 解决方案 解决方案二:修改亮度?建议步骤:加载图片,修改亮度,显示.解决方案三:可以用一些图形处理组件来处理(比如Java的ImageFilters组件),或者自己写程序一个像素一个像素(getRGB/setRGB)的处理.解决方案四:可以剪切相应部分形成一个新的图片,把它变亮,然后放在原来图片上面相应的位置.解决方案五:你可以做的!

优化PHP程序

 网上很多文章介绍优化php程序,是通过安装Zend Optimizer之类的加速软件实现的,但这种加速是有限的.本文主要从程序代码着手介绍一些优化手段. 1.程序的抽象层越多,各抽象层分离得越严格,程序效率越低. 最原始的应用于网页的php程序模式莫过于脚本嵌入模式,即仅仅在一个网页中需要动态处理或显示数据的地方通过加入标识符嵌入php脚本.一般来说这是php程序员最早学习的模式,它只有一个抽象层,就是网页,故本文称其为单层模式. 随着网站规模逐渐增大,程序员可能会发现单层模式的程序很难维护,

使用JBuilder开发J2ME程序

程序 使用JBuilder开发J2ME程序 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb          现在实际应用大部分都是使用JBuilder在进行开发,所以简单介绍一下如何使用.        JBuiler 9(包括JB9)以上都包含了MobileSet和WTK,可以直接用来开发.        使用JB9以上开发J2ME应用时,和使用JB进行一般的开发类似,步骤如下: 1.  新建project,根据需要选择合适的project类型.以下以新建空项

Antenna 打包 J2ME 程序

程序|打包 Antenna 打包 J2ME 程序 作者: Jeru 很多人喜欢用 ant 来编译打包 Java 应用程序,可以很方便的生成 war 包在 J2EE 容器中运行,我在 sun 的网站上也看到了一篇用 ant 打包 J2me 程序的教程:http://wireless.java.sun.com/midp/articles/ant/ 测试了一下,还不错,但美中不足的是,需要自己事先写好 manifest.mf 和 jad 文件,于是心有不甘,继续在 google 上搜索,终于找了一个很