活力 J2ME 一

几个基本概念的学习。

应用程序管理器(Java Application ManagerJAM,在规范中也称做Application Management SoftwareAMS)。这是一个用来执行J2ME应用程序的原生程序(Native,代表通常用C/C++撰写而成),应用程序管理器负责管理在设备上所有的J2ME应用程序。

 

 

 

 

MIDlet一个可以执行的应用程序基本单位。除了继承自javax.microedition. midlet.MIDlet之外,还包括让此类可以顺利执行的所有其它类和资源文件(只要是非class文件都称做资源文件)所构成的集合。

JAR文件JAR File.jar文件)实际上是包裹住MIDlet Suite的文件,属于ZIP压缩格式。

描述文件(Descriptor File.jad文件):用来描述MIDlet Suite基本信息的文本文件,包括MIDlet Suite所包含之MIDlet相关信息(类名称、图标、程序名),或是MIDlet Suite之整体信息(文件大小、安全权限、证书等),这是一个外部文件(不存在JAR文件内部,独立存在的文件)。

JADJAR的内容理论上,每个MIDP应用程序都是由一个JAD文件与一个JAR文件所构成,两者缺一不可。但是实际的情况下,在某些设备上部署MIDP应用程序时,该设备上的应用程序管理器并不要求一定要有JAD文件,有些甚至会自己产生对应的JAD。在MIDP 1.0时,是否有JAD文件无关痛痒。但是在MIDP 2.0之中,是否有JAD文件将涉及安全议题。

JAD文件是一个纯文本文件,所以内部都是一些属性和属性值。而JAR文件除了包含MIDlet以及其它相关的class文件(辅助类、程序库)之外,还包含了:

1.资源文件

MIDlet执行时所需要的文件,如图片、文本文件等,只要不是class文件,都称做资源。另外规范有规定,class文件不能当做资源来使用。

2.清单文件(Manifest FileManifest.mf

用来描述一个MIDP应用程序之基本信息,包括MIDlet Suite所包含之MIDlet相关信息(类名称、图标、程序名),或是MIDlet Suite之整体信息(名称、版本号码、制作者等)。这是一个内部文件(存在于JAR文件内部)。

MIDlet的基本程序结构:

javax.microedition.midlet.MIDlet类中定义了三个抽象方法(abstract),因此我们自己撰写MIDlet必须实现他们,这三个抽象方法分别是:

l         startApp()  至运作状态;

l         pauseApp()  至停止状态;

l         destroyApp()  至消灭状态。

使用Display.getDisplay(this)来取得代表该设备显示画面的Display对象。从应用程序管理器调用startApp()MIDlet结束运作这段时间之内,不管何时调用Display.getDisplay(this),取得的都是同一份Display对象的引用。所以通常我们会将取得的Display对象保留下来,供往后使用。要设定显示在屏幕上的画面,使用Display对象的引用,并调用其setCurrent()方法:

display.setCurrent( Displayable类的子类实体)

千万不要将只需要执行一次(例如初始化)的程序代码写在startApp()之中,因为startApp()在整个MIDP应用程序的周期里不只被执行一次

MIDlet管理自己的生命周期

应用程序管理器来控制MIDlet的生命周期之外,MIDlet本身也可以软性地决定自己的状态,但不是自己改变自己的状态,而是MIDlet先调用上述相对应的状态改变函数,这些函数会发出信息通知应用程序管理器,请它来帮我们改变MIDlet的状态,但是决定权在于应用程序管理器,不保证一定可行。

startApp()pauseApp()以及destroyApp()并非控制MIDlet生命周期的函数,它们只是一个提供我们初始化资源、释放资源的地方而已。

随机数:

java.util包之中有个Random类,负责用来产生随机数(只能是intlong类型的随机数)。所以使用前,我们必须先产生Random类,您可以用

Random rdm = new Random(seedvalue) ;

其中seedvalue是随机数种子。或者您也可以用

Random rdm = new Random() ;

这个构造函数会在内部调用

this(System.currentTimeMillis());

它会根据当时的时间设定随机数种子。任何时候我们都可以调用setSeed()来设定随机数种子。

我们想要自定随机数产生的范围,那么就要用到一些技巧。举例来说,如果你想要产生-160160之间的数值,我们就必须用到余数运算符(%):

int res = rdm.nextInt()%160 ;

如果想要产生0160之间的数值,由于int本身是有号数,而且为32 Bits。必须把第一个Bit设定成0(代表正数)才行,我们可以使用

int res = (rdm.nextInt() >>> 1)%160 ;

利用无号移位运算符。或

int res = (rdm.nextInt() & 0x7FFFFFFF)%160 ;

把第一个Bit设成0。两种方法皆可。

相反如果想要产生-1600之间的数值,只要把第一个Bit设成1即可。我们可以把上述产生正数的方法前面加上负号。也可以用

int res = (rdm.nextInt() | 0x80000000)%160 ;

 

完善中。。。

完善中。。。

完善中。。。

完善中。。。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值