手机游戏中记录存储系统与存储环境

简介:

MIDPMIDlets提供了一种永久存储和后来读出数据的数据库解决方案,被称为Record Managerment System(RMS),是一种简单的基于记录的数据库。很显然,手机上的数据库系统不可能有PC上的强大功能。微小的存储空间也限制了它们的结构不能过于复杂。RMS是专门针对移动设备的服务的。

RMS 包中包括 RecordStore 类。在一个 MIDlet suite 包里的所有 MIDlet 都允许创建多个记录集,只要它们被赋于不同的名称。当 MIDlet 包从平台中被移除后,所有与该包有关的的记录集都同时会被移除。同一个包内的 MIDlets 可以直接互相访问它们的记录集,不同包内也可产生共享,但这需要有包的授权属性决定。访问模式会在准备提供共享的 RecordStore 建立时被创建。访问模式允许私有使用或访问。
RecordStore API 采用了时间戳的概念,其长整型变量由 System currentTimeMillis() 函数返回决定。 Record store 每次被修改后都会自动在其属性上附加上时间戳,这为同步化引擎和程序的控制都极为有效。
记录是字节数组。开发者可以利用 InputStream 的派生类 DataInputStream DataOutputStream 以及 ByteArrayInputStream ByteArrayOutputStream 将不同种类的数据类型打包,以字节流的形式发送和接收。
区别记录的唯一标记是他们的 ID 值,作为记录集的主键。第一项记录的 ID 1,其后的每个记录 ID 递增。
Record 是以字节为基本单位来存放的,所以所有要写入 record 的数据都必须先将其转为字节才能写入,从 record 所读出来的数据也是字节,必须将其转换为原先写入时的数据类型才有意义。
然而读取或写入的字节数组都只能代表一个字段的信息,如果需要读取或写入多个字段就必须要将数据转换成字节信息,并且提供适当的机制来分隔这些信息。主要有两种方法:
1.     标记法。
将所有要存放的数据用字符串表示,但是在字段和字段之间以一个特殊的符号作为分隔。符号不能和字段内的数据相同的字符。
2 .利用输入/输出流
这一种方法较上一种复杂,但是较为实用。方法一中所有的字段只能以字符串的形式存储,要对这些字段作进一步的处理非常麻烦。利用输入输出流可以写入及读取不同数据类型的数据,做法是在写入数据时先将一个 DataOutputStream 数据流对象串接到一个 ByteArrayOutStream 数据流对象,然后再依字段的数据类型用 writeInt() writeBoolean() 等方法写入,最后把 ByteArrayOutputStream 内的元素数据写入 record 中。反之若要读取数据,则先要串接一个 DataInputStream 对象和 ByteArrayInputStream ,依字段的数据类用 readInt() readBoolean() 等方法读取。
     本程序中主要存放在永久区的内容为用户得到的最高分数的记录。每次有新的更高的记录就会插入进相应的位置,将原来的记录排挤出记录。
通常在 MIDP 应用程序的手机执行环境中,所牵涉的内存有下列三种:
⒈应用程序存储内存
RecordStore 存储内存
⒊执行时期内存( Java Heap )
其中前两种是持久性的内存,关闭电源后还能保持数据的正确性,通常这两种内存所能存储的容量是合并计算的,这个上限对每种手机都不一样,大部分在一两百 KB 内。在这样的情况下需要在不影响原有功能的情况下适当的缩减 JAR 文件的大小,除了可以克服内存空间的限制外,也能大幅度缩短下载的时间(费用也降低了),势必会有更多的人愿意下载所开发的程序。其方法有:
第一,就是尽量缩短命名的长度。在应用程序内,对于所建立的类、接口、方法及变量名而言,都需要赋予一个识别的名称,所命名的名称每多一个字符就会在类文件内多产生一个字节,对于一个较复杂的应用程序而言就会增加为数不小的数据量。所有这些可以借助混淆器来帮助实现。
第二,减少复杂的程序结构,为一些共同的行为建立一个抽象类( Abstract Class 来表示继承的子类的共通性。
第三,减少图形数据的大小。将 PNG 格式的小分辨率图象合并在一张大的高分辨率图象中,由于减少了 chunks ,将比合并前的总大小减少许多。
注:部分内容摘自Michael Morrison著 \李强译《 J2ME手机游戏编程入门 》及刘斌著《J2ME手机开发入门》


     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/204445,如需转载请自行联系原作者



相关文章
|
1月前
|
JavaScript Java 测试技术
基于Java的网上手机销售系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上手机销售系统的设计与实现(源码+lw+部署文档+讲解等)
26 0
|
2月前
|
机器学习/深度学习 人工智能 安全
未来智能手机系统的发展趋势与挑战
移动应用与系统领域一直处于快速发展的状态,未来智能手机系统将面临更多挑战和机遇。本文探讨了在人工智能、物联网和安全性方面的新发展趋势,以及如何应对未来智能手机系统的挑战。
|
2月前
|
存储 安全 前端开发
509基于java的网上手机销售系统
509基于java的网上手机销售系统
|
2月前
|
人工智能 安全 vr&ar
未来智能手机系统的发展趋势与展望
【2月更文挑战第11天】随着科技的快速发展,智能手机已经成为人们生活中不可或缺的一部分。本文将探讨未来智能手机系统的发展趋势,以及对安卓和iOS系统的展望,旨在带领读者深入了解智能手机操作系统的未来发展方向。
38 5
|
2月前
|
网络协议 关系型数据库 MySQL
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
|
2月前
|
移动开发 API HTML5
HTML5响应式自动采集API壁纸系统源码自适应手机端
HTML5响应式自动采集API壁纸系统源码自适应手机端
41 11
HTML5响应式自动采集API壁纸系统源码自适应手机端
|
4月前
|
Android开发 iOS开发
【教程】如何在苹果手机上查看系统文件?
苹果手机与安卓手机不同,无法直接访问系统文件夹。但是,如果我们想要查看苹果手机的系统文件,可以借助一些工具来实现。本文将介绍一款名为克魔助手的iOS设备管理软件,它能帮助我们轻松查看苹果手机的系统文件。 连接iPhone到电脑,打开克魔助手,用数据线将iPhone连接到电脑上。连接成功后,克魔助手会自动读取iPhone的信息,并显示在软件的主界面上。
【教程】如何在苹果手机上查看系统文件?
|
5月前
|
前端开发 JavaScript Java
基于SSM实现手机销售商城系统
基于SSM实现手机销售商城系统
|
5月前
|
iOS开发
【怒怼老乔】居然苹果手机IOS系统还不支持css3的transparent属性值,我去~~~~
【怒怼老乔】居然苹果手机IOS系统还不支持css3的transparent属性值,我去~~~~
|
5月前
|
存储 移动开发 JavaScript
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)