`
izuoyan
  • 浏览: 9222685 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

J2ME最佳实践概述

阅读更多

作者:asklxf 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=962

J2ME是Sun发布的运行在小型设备上的微型版Java的一系列标准,其中,最重要的标准便是运行在手机上的MIDP应用程序了。到目前为止,MIDP一共发布了两个版本:MIDP 1.0(JSR37)和MIDP 2.0(JSR118),2.0版本可以向后兼容1.0版本,也就是说,支持MIDP 2.0的手机可以同时运行MIDP 1.0和MIDP 2.0的应用程序。本文将重点讲述开发MIDP应用程序时非常有用的一些设计模式,开发技巧以及如何调试、优化J2ME应用程序。

本文将讨论J2ME开发的以下内容:

  • 如何自动适应用户手机配置
  • 如何在屏幕间导航
  • 如何实现一个灵活的联网应用
  • 如何实现一个灵活的RMS应用
  • 如何调试并优化J2ME程序

避免OutOfMemoryError

对于MIDP应用程序来说,由于手机设备上的资源非常有限,较弱的CPU计算能力,有限的内存(从几十KB到几百KB,虽然少数高端手机拥有超过1M的动态内存),很小的屏幕尺寸,因此,为了让一个MIDP应用程序能够不加改动地在多种不同手机上运行,程序必须有能力根据系统配置自动调整运行时的参数。比如,对于内存非常小的手机,如果从网络下载一幅较大的图像,需要分配巨大的缓冲区,就可能导致OutOfMemoryError错误,使应用程序直接终止,这会使用户感到不知所措,或者丢失用户的重要数据。
因此,在试图分配一块大内存之前,首先使用System.gc()尝试让垃圾收集器释放无用对象占用的内存,然后,使用Runtime.getRuntime().freeMemory()方法获得可用的内存空间。如果可用空间太小,给用户一个“内存不足,无法完成操作”的Alert提示,从而尽可能地避免OutOfMemoryError错误。

// 示例代码:
System.gc();
int max_size = 102400; // 100KB
int free_size = (int)Runtime.getRuntime().freeMemory();
if(max_size>free_size*2/3) {
// TODO: Alert!
}
else {
byte[] buffer = new byte[max_size];
// TODO: Download image...
}

减少图片以减小JAR文件大小

许多手机会因为JAR文件太大而无法运行MIDP应用程序,而减小JAR文件尺寸的有效方法之一是减少不必要的图片,例如,启动时的LOGO图片可以用文字来代替,列表项可以只显示文字而不显示图片。为了能适应不同配置的手机,我们的代码就应该编写得更加灵活。例如,从JAR包中加载图片时:

Image image = null;
try {
image = Image.createImage("/logo.png");
}
catch(Exception ioe) {}
if(image==null) {
g.setColor(0);
g.drawString("info", getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.BASELINE);
}
else {
g.drawImage(image, getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.VCENTER);
}

如果加载失败,程序会以文字方式显示,这样,对于低配置的手机,只需要把美化界面的图片删除掉,再重新打包即可得到一个可发布的尺寸较小的JAR包,同时应用程序的代码并没有改动。

类似的,在加载List之类的UI组件时:

Image image = null;
try {
image = Image.createImage("/logo.png");
}
catch(Exception ioe) {}
append("label", image);

这使得有无图片仅仅影响界面美观,而不影响应用程序的功能。

分享到:
评论

相关推荐

    j2me最佳实践,UI设计

    ### J2ME最佳实践与UI设计关键知识点 #### 一、J2ME概述与MIDP版本 J2ME(Java 2 Micro Edition),由Sun Microsystems发布,是为小型设备和消费类电子产品设计的Java平台标准。其核心是MIDP(Mobile Information ...

    J2ME游戏开发PDF教程

    - "J2ME游戏开发PDF教程":这个教程很可能是详细的指南,涵盖了从基础到进阶的J2ME游戏开发技术,包括实例和最佳实践。 通过深入学习和实践,开发者可以掌握J2ME游戏开发的技巧,创造出吸引人的移动游戏,尽管现代...

    【中文】【 J2ME开发大全 】【pdf】【15.87 MB】

    给定信息中的“【中文】【 J2ME开发大全 】【pdf】【15.87 MB】”指的是一本关于J2ME开发的经典书籍,该书籍提供了详尽的J2ME开发指南,包括基础概念、编程技巧、最佳实践等内容。作为一本经典书籍,它对于想要深入...

    J2ME游戏开发(第一版)无打印限制版

    - **实战技巧**:分享了一些实用的技巧和最佳实践,帮助开发者避免常见陷阱,提高开发效率。 #### 五、社区和支持 - **交流平台**:译者提供了多种联系方式,鼓励读者参与交流和反馈,共同促进技术进步。 - **自由...

    经典→j2me游戏开发实例讲解

    Java 2 Micro Edition(J2ME)是一种针对嵌入式设备和移动设备的Java平台,它主要用于开发在手机、...通过对各种游戏实例的剖析,开发者能够掌握J2ME平台的特性和最佳实践,为构建富有吸引力的移动游戏奠定坚实基础。

    j2me for development

    本部分将详细介绍J2ME游戏开发所需的基础知识,包括关键概念、API使用以及最佳实践等。 ##### 2.1 J2ME API概览 J2ME的核心API包括MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device ...

    开发J2ME的典型例子

    "Enterprise J2ME - Developing Mobile Java Applications"这本书可能涵盖了J2ME开发的各个方面,包括基础概念、开发流程、MIDP API的使用、调试技巧以及最佳实践。对于初学者来说,这是一份宝贵的资源,可以帮助...

    J2EE 和J2ME开发手册

    "j2ee j2me 手册"很可能是综合性的指南,包含了J2EE和J2ME的开发教程、最佳实践和示例代码。 **总结** 本J2EE和J2ME开发手册是一份宝贵的资源,不仅提供了API参考,还可能包括了实际开发中的技巧和经验分享,对于...

    Beginning J2ME 3rd Edition

    《Beginning J2ME 第三版》深入浅出地讲解了J2ME的基础理论、开发技巧和最佳实践,对于希望进入移动应用开发领域的初学者来说,是一本不可多得的指南。尽管随着技术的发展,J2ME已不如过去那样流行,但其原理和开发...

    j2me 游戏代码及论文

    论文通常会深入探讨J2ME游戏开发的技术挑战、最佳实践以及可能的解决方案。它可能包括以下内容: 1. **技术分析**:分析J2ME平台在游戏开发中的优缺点,如渲染性能、内存管理等。 2. **设计模式**:介绍适用于J2ME...

    J2me保存记录框架(封装RMS)

    10. **最佳实践** - 使用事务管理,确保数据一致性。 - 对于大量数据,考虑分块写入和读取,以避免一次性加载所有记录导致内存不足。 - 频繁访问的数据可以考虑缓存,提高性能。 这个提供的 J2ME 入门资料包含了...

    j2me google gis api doc

    8. **最佳实践和优化**:分享提高性能、减少资源消耗和提升用户体验的技巧。 9. **更新日志和版本信息**:记录API的更新历史,包括新功能的添加、已知问题的修复和兼容性改进。 通过深入学习和理解这份J2ME谷歌GIS...

    简谈手机游戏移植j2me

    文章中提到了使用`system.gc()`来手动触发垃圾回收,但这并不是最佳实践,因为频繁调用垃圾回收会显著降低游戏性能。 3. **输入事件处理** 不同于PC或主机游戏,移动设备上的输入方式较为有限。在J2ME平台上,...

    J2ME in a Nutshell_nutshell_java_

    通过阅读《J2ME in a Nutshell》,开发者可以全面了解J2ME生态系统,掌握开发移动应用的关键技术和最佳实践,从而在Java的微型世界中游刃有余。书中的深入讲解和实用示例将帮助读者从新手迅速成长为经验丰富的J2ME...

    J2ME用户使用手册(PDF)

    **J2ME用户使用手册** 内容可能涵盖以上所有知识点,并且可能深入讲解各个API的使用方法、最佳实践、常见问题解决等。例如,手册可能会详细介绍如何创建一个简单的MIDlet,如何使用MIDP的用户界面组件构建交互式界面...

    J2Me - Java In Small Things.pdf

    这个社区为J2ME的持续发展提供了强大的支持,包括但不限于新特性的建议、bug修复、最佳实践分享等。此外,Java Community Process (JCP) 作为J2ME的指导机构,在规范制定和技术方向上起到了关键作用。 综上所述,...

Global site tag (gtag.js) - Google Analytics