活力 J2ME 一

news/2024/7/6 1:44:06

几个基本概念的学习。

应用程序管理器(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 ;

 

完善中。。。

完善中。。。

完善中。。。

完善中。。。

 

 

 

 

 

 

 

 


http://www.niftyadmin.cn/n/4008817.html

相关文章

瑞星安全随身WiFi:为用户WiFi上网安全保驾护航

近年来我国互联网的发展真的可以用“飞快”来形容,各类网站、技术层出不穷,市场规模呈几何式增长,与此同时,使用无线WiFi的网民也在不断增多。现在,几乎每个家庭中都有无线路由器,很多公共场所,…

Common Lisp学习笔记(七)

7 Applicative Programming 7.2 funcall7.3 mapcar7.4 manipulating tables with mapcar7.5 lambda expressions7.6 find-if7.7 my-assoc7.8 remove-if, remove-if-not7.9 reduce7.10 everydebug tool: trace7.11 operating on multiple lists7.12 function函数7.13 kwargs for…

市值能否全面反映行业影响力?

跌宕起伏的发展过后,CDN行业终于迎来了井喷时代。在2014亚太全媒体CDN峰会上,国家广电总局科技委副主任杜百川表示,2017年超过一半的互联网流量将由CDN提供,全球CDN的收入将达到50亿美金。在这个传统企业电商化、视频抢占移动终端…

[转]Mac 科研常用软件

转自:http://bbs.feng.com/read-htm-tid-7698336.html 我的 Mac 是 2012 年的 Pro Retina,现在主要用的是 Mac 系统,Windows 已经不常上了经常用的软件有以下几个: 1. 科学绘图软件:SciDAVis 和 Plot 目前这两个软件更…

C# 插入、删除Excel分页符

引言 对Excel表格设置分页对我们预览、打印文档时是很方便的,特别是一些包含很多复杂数据的、不规则的表格,为保证打印时每一页的排版美观性或者数据的前后连接的完整性,此时的分页符就发挥了极大的作用。因此,本文将介绍C#设置Ex…

认识UniJa技术

2004年11月1日,中国联通在其高速的 CDMA 网络上正式推出了基于Java技术的新的下载类增值服务-UniJa,为中国的CDMA 用户提供新颖、独特的 Java 应用服务。 中国联通已经建成世界上最大的CDMA移动通信网络,拥有2000多万CDMA用户。CDMA 1x技术的…

Robotium 测试多个activity

2019独角兽企业重金招聘Python工程师标准>>> How to test two activities with Robotium:http://stackoverflow.com/questions/16019011/how-to-test-two-activities-with-robotium //Click on add ident buttonsolo.clickOnButton("Tap to get ano…

顺应时代,多元制胜——从“五大战略”看AMD的发展方向

随着移动终端的崛起,PC行业正遭遇着前所未有的挑战,芯片行业也是“今时不同往日”了。这在芯片巨头英特尔身上已有所反映——一味的“抱残守缺”,wintel联盟已经到了濒临崩溃的地步。当然,行业变革也可被理解为前所未有的机遇----…