我对J2ME上的概念并不陌生,但我有点懒:最近我的应用程序把图片像糖果一样加载到内存中……
Sprite example = new Sprite(Image.createImage("/images/example.png"), w, h);我不确定这是不是最好的方式,但它在我的摩托罗拉Z6上运行良好,直到昨晚,我在一部旧的三星手机上测试了这个应用程序,图像甚至无法加载,并且需要多次尝试启动线程才能显示出来。屏幕是白色的,所以我意识到这一定是关于图像加载的事情,我做得不是很好……有没有人可以告诉我如何在我的应用程序中正确地创建加载例程?
发布于 2009-05-28 21:06:04
我不确定您到底在寻找什么,但是您所描述的行为听起来非常像您正在经历一个OutOfMemory异常。尝试减少图像的维度(堆使用量基于维度),并查看行为是否停止。这将让您知道这是否真的是OutOfMemory问题或其他问题。
其他提示:
发布于 2009-06-04 10:52:40
使用胶片图像(在一个图像中具有定义尺寸的一组图像),并使用逻辑将它们逐个提取出来。
因为它们被分组到一个图像中,所以您可以节省每个图像的标题空间,从而可以减少内存使用。
该技术首先在MIDP1.0内存受限设备中使用。
发布于 2009-05-29 00:14:27
使用Fostah方法不反复加载图像,我创建了以下类:
public class ImageLoader {
private static Hashtable pool = new Hashtable();
public static Image getSprite(String source){
if(pool.get(source) != null) return (Image) pool.get(source);
try {
Image temp = Image.createImage(source);
pool.put(source, temp);
return temp;
} catch (IOException e){
System.err.println("Error al cargar la imagen en "+source+": "+e.getMessage());
}
return null;
}
}因此,每当我需要一个镜像时,我首先向池请求它,或者只是将它加载到池中。
https://stackoverflow.com/questions/919917
复制相似问题